diff --git a/cmd/guru/freevars.go b/cmd/guru/freevars.go index c4ff6590..39b04d48 100644 --- a/cmd/guru/freevars.go +++ b/cmd/guru/freevars.go @@ -184,7 +184,7 @@ func (r *freevarsResult) display(printf printfFunc) { for _, ref := range r.refs { // Avoid printing "type T T". var typstr string - if ref.kind != "type" { + if ref.kind != "type" && ref.kind != "label" { typstr = " " + types.TypeString(ref.typ, qualifier) } printf(ref.obj, "%s %s%s", ref.kind, ref.ref, typstr) diff --git a/cmd/guru/testdata/src/freevars/main.go b/cmd/guru/testdata/src/freevars/main.go index 5820a02c..c6aa08d2 100644 --- a/cmd/guru/testdata/src/freevars/main.go +++ b/cmd/guru/testdata/src/freevars/main.go @@ -33,9 +33,8 @@ func main() { f(x) // @freevars fv3 "f.x." - // TODO(adonovan): enable when go/types supports labels. -loop: // #@freevars fv-def-label "loop:" +loop: // @freevars fv-def-label "loop:" for { - break loop // #@freevars fv-ref-label "break loop" + break loop // @freevars fv-ref-label "break loop" } } diff --git a/cmd/guru/testdata/src/freevars/main.golden b/cmd/guru/testdata/src/freevars/main.golden index b9eeab21..a3bc0c95 100644 --- a/cmd/guru/testdata/src/freevars/main.golden +++ b/cmd/guru/testdata/src/freevars/main.golden @@ -16,3 +16,10 @@ var y rune Free identifiers: var x int +-------- @freevars fv-def-label -------- +No free identifiers. + +-------- @freevars fv-ref-label -------- +Free identifiers: +label loop +