From 97494a45e21099c3a357785f31894a5e69e086c8 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Fri, 15 May 2015 16:35:43 +0000 Subject: [PATCH] Revert "cmd/internal/gc: ignore declarations of types for goto validation" This reverts commit 5726af54eb3a52b9446a834991110b945e780e99. It broke all the builds. Change-Id: I4b1dde86f9433717d303c1dabd6aa1a2bf97fab2 Reviewed-on: https://go-review.googlesource.com/10143 Reviewed-by: Brad Fitzpatrick --- src/cmd/internal/gc/dcl.go | 3 --- src/cmd/internal/gc/gen.go | 21 +++------------------ src/cmd/internal/gc/go.go | 1 - test/goto.go | 16 ---------------- 4 files changed, 3 insertions(+), 38 deletions(-) diff --git a/src/cmd/internal/gc/dcl.go b/src/cmd/internal/gc/dcl.go index 58b69ab8f99..85a33bec3fa 100644 --- a/src/cmd/internal/gc/dcl.go +++ b/src/cmd/internal/gc/dcl.go @@ -65,9 +65,6 @@ func popdcl() { } s = Pkglookup(d.Name, d.Pkg) lno = int(s.Lastlineno) - if s.Def != nil { - d.whyPushed = s.Def.Op - } dcopy(s, d) d.Lastlineno = int32(lno) if dflag() { diff --git a/src/cmd/internal/gc/gen.go b/src/cmd/internal/gc/gen.go index bba04d41ad7..cd0e650ca99 100644 --- a/src/cmd/internal/gc/gen.go +++ b/src/cmd/internal/gc/gen.go @@ -159,21 +159,6 @@ func checkgoto(from *Node, to *Node) { fs = fs.Link } if fs != to.Sym { - // more declarations at label than at goto. - // figure out if they are all types. - ts := to.Sym - ntt := nt - for ; ntt > nf; ntt-- { - if ts.whyPushed != OTYPE { - break - } - ts = ts.Link - } - // all types, nothing to see here. - if ntt == nf { - return - } - lno := int(lineno) setlineno(from) @@ -183,11 +168,11 @@ func checkgoto(from *Node, to *Node) { var block *Sym var dcl *Sym - ts = to.Sym + ts := to.Sym for ; nt > nf; nt-- { if ts.Pkg == nil { block = ts - } else if ts.whyPushed != OTYPE { + } else { dcl = ts } ts = ts.Link @@ -196,7 +181,7 @@ func checkgoto(from *Node, to *Node) { for ts != fs { if ts.Pkg == nil { block = ts - } else if ts.whyPushed != OTYPE { + } else { dcl = ts } ts = ts.Link diff --git a/src/cmd/internal/gc/go.go b/src/cmd/internal/gc/go.go index 4800218c95f..31692bdf00c 100644 --- a/src/cmd/internal/gc/go.go +++ b/src/cmd/internal/gc/go.go @@ -111,7 +111,6 @@ type Sym struct { Uniqgen uint32 Importdef *Pkg // where imported definition was found Linkname string // link name - whyPushed uint8 // why this symbol pushed onto dclstack. Same as Node.Op. Used by goto validation // saved and restored by dcopy Pkg *Pkg diff --git a/test/goto.go b/test/goto.go index c626f3d1c11..ca477b3d0c3 100644 --- a/test/goto.go +++ b/test/goto.go @@ -536,19 +536,3 @@ func _() { goto L // ERROR "goto L jumps into block starting at LINE-4|goto jumps into block" } } - -// issue 8042 -func _() { - goto L - type a int - L: -} - -// make sure we only complain about variable declarations. -func _() { - goto L // ERROR "goto L jumps over declaration of x at LINE+2|goto jumps over declaration" - type a int - x := 1 // GCCGO_ERROR "defined here" - _ = x -L: -}