From 9d6cc5fd083f8e30134f26983442adc31a10e05f Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Fri, 20 Jun 2014 11:08:45 -0700 Subject: [PATCH] go.tools/cmd/vet: prevent panic on goto without label LGTM=r R=r CC=golang-codereviews https://golang.org/cl/107260043 --- cmd/vet/deadcode.go | 4 +++- cmd/vet/testdata/deadcode.go | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cmd/vet/deadcode.go b/cmd/vet/deadcode.go index ade75b0b71..3b306c2104 100644 --- a/cmd/vet/deadcode.go +++ b/cmd/vet/deadcode.go @@ -81,7 +81,9 @@ func (d *deadState) findLabels(stmt ast.Stmt) { case *ast.BranchStmt: switch x.Tok { case token.GOTO: - d.hasGoto[x.Label.Name] = true + if x.Label != nil { + d.hasGoto[x.Label.Name] = true + } case token.BREAK: stmt := d.breakTarget diff --git a/cmd/vet/testdata/deadcode.go b/cmd/vet/testdata/deadcode.go index 3028c98bc3..5370bc32f6 100644 --- a/cmd/vet/testdata/deadcode.go +++ b/cmd/vet/testdata/deadcode.go @@ -2118,3 +2118,8 @@ var _ = func() int { } println() // ok } + +var _ = func() { + // goto without label used to panic + goto +}