]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix recursive inimport handling
authorMatthew Dempsky <mdempsky@google.com>
Thu, 21 Jun 2018 22:35:32 +0000 (15:35 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 21 Jun 2018 23:57:55 +0000 (23:57 +0000)
expandDecl can be called recursively, so it's not an appropriate place
to clean inimport. Instead, move this up to resolve, along with an
appropriate recursion check.

Passes toolstash-check.

Change-Id: I138d37b057dcc6525c780b4b3fbaa5e97f99655b
Reviewed-on: https://go-review.googlesource.com/120455
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
src/cmd/compile/internal/gc/iimport.go
src/cmd/compile/internal/gc/typecheck.go

index d158899aaaa0a3efac32804f51a0f88796d7df8c..54c5d8dc2ff10e092fd5f10a9d59b51f776ca2b0 100644 (file)
@@ -46,9 +46,7 @@ func expandDecl(n *Node) {
                return
        }
 
-       inimport = true
        r.doDecl(n)
-       inimport = false
 }
 
 func expandInline(fn *Node) {
index 8f0d6050c3c22151ff04938b5600cd767e642755..1b68e057fcb65b8f78f34e4d81e6d561266b759e 100644 (file)
@@ -37,7 +37,12 @@ func resolve(n *Node) *Node {
        }
 
        if n.Sym.Pkg != localpkg {
+               if inimport {
+                       Fatalf("recursive inimport")
+               }
+               inimport = true
                expandDecl(n)
+               inimport = false
                return n
        }