text: 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"
  	}
  }
  