github.com/april1989/origin-go-tools@v0.0.32/cmd/guru/testdata/src/freevars/main.go (about)

     1  package main
     2  
     3  // Tests of 'freevars' query.
     4  // See go.tools/guru/guru_test.go for explanation.
     5  // See freevars.golden for expected query results.
     6  
     7  // TODO(adonovan): it's hard to test this query in a single line of gofmt'd code.
     8  
     9  type T struct {
    10  	a, b int
    11  }
    12  
    13  type S struct {
    14  	x int
    15  	t T
    16  }
    17  
    18  func f(int) {}
    19  
    20  func main() {
    21  	type C int
    22  	x := 1
    23  	const exp = 6
    24  	if y := 2; x+y+int(C(3)) != exp { // @freevars fv1 "if.*{"
    25  		panic("expected 6")
    26  	}
    27  
    28  	var s S
    29  
    30  	for x, y := range "foo" {
    31  		println(s.x + s.t.a + s.t.b + x + int(y)) // @freevars fv2 "print.*y."
    32  	}
    33  
    34  	f(x) // @freevars fv3 "f.x."
    35  
    36  loop: // @freevars fv-def-label "loop:"
    37  	for {
    38  		break loop // @freevars fv-ref-label "break loop"
    39  	}
    40  }