| // +build ignore |
| |
| package C1 |
| |
| import "strings" |
| |
| func example() { |
| x := "foo" |
| println(x[:len(x)]) |
| |
| // Match, but the transformation is not sound w.r.t. possible side effects. |
| println(strings.Repeat("*", 3)[:len(strings.Repeat("*", 3))]) |
| |
| // No match, since second use of wildcard doesn't match first. |
| println(strings.Repeat("*", 3)[:len(strings.Repeat("*", 2))]) |
| |
| // Recursive match demonstrating bottom-up rewrite: |
| // only after the inner replacement occurs does the outer syntax match. |
| println((x[:len(x)])[:len(x[:len(x)])]) |
| // -> (x[:len(x)]) |
| // -> x |
| } |