// +build ignore package C1 import "strings" func example() { x := "foo" println(x) // Match, but the transformation is not sound w.r.t. possible side effects. println(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) // -> (x[:len(x)]) // -> x }