From 011ea87921cb37dc8e4147d99c22234f875d2651 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Thu, 21 Jun 2018 15:35:32 -0700 Subject: [PATCH] cmd/compile: fix recursive inimport handling 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 TryBot-Result: Gobot Gobot Reviewed-by: Robert Griesemer --- src/cmd/compile/internal/gc/iimport.go | 2 -- src/cmd/compile/internal/gc/typecheck.go | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/cmd/compile/internal/gc/iimport.go b/src/cmd/compile/internal/gc/iimport.go index d158899aaa..54c5d8dc2f 100644 --- a/src/cmd/compile/internal/gc/iimport.go +++ b/src/cmd/compile/internal/gc/iimport.go @@ -46,9 +46,7 @@ func expandDecl(n *Node) { return } - inimport = true r.doDecl(n) - inimport = false } func expandInline(fn *Node) { diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index 8f0d6050c3..1b68e057fc 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -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 } -- 2.50.0