package main | |
// Tests of 'freevars' query. | |
// See go.tools/guru/guru_test.go for explanation. | |
// See freevars.golden for expected query results. | |
// TODO(adonovan): it's hard to test this query in a single line of gofmt'd code. | |
type T struct { | |
a, b int | |
} | |
type S struct { | |
x int | |
t T | |
} | |
func f(int) {} | |
func main() { | |
type C int | |
x := 1 | |
const exp = 6 | |
if y := 2; x+y+int(C(3)) != exp { // @freevars fv1 "if.*{" | |
panic("expected 6") | |
} | |
var s S | |
for x, y := range "foo" { | |
println(s.x + s.t.a + s.t.b + x + int(y)) // @freevars fv2 "print.*y." | |
} | |
f(x) // @freevars fv3 "f.x." | |
loop: // @freevars fv-def-label "loop:" | |
for { | |
break loop // @freevars fv-ref-label "break loop" | |
} | |
} |