From 1ee544641450236e8c78d8d408e6cb8ab69cee60 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Mon, 12 Sep 2016 13:39:54 -0700 Subject: [PATCH] cmd/compile: remove incannedimport This used to be used to give special semantics to the builtin definitions of package runtime and unsafe, but none of those are relevant anymore: - The builtin runtime and unsafe packages do not risk triggering false import cycles since they no longer contain `import "runtime"`. - bimport.go never creates ODCLTYPE, so no need to special case them. - "incannedimport != 0" is only true when "importpkg != nil" anyway, so "incannedimport == 0 && importpkg == nil" is equivalent to just "importpkg == nil". Change-Id: I076f15dd705d4962e7a4c33972e304ef67e7effb Reviewed-on: https://go-review.googlesource.com/29084 Run-TryBot: Matthew Dempsky TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/cmd/compile/internal/gc/bimport.go | 2 +- src/cmd/compile/internal/gc/go.go | 2 -- src/cmd/compile/internal/gc/main.go | 3 --- src/cmd/compile/internal/gc/typecheck.go | 6 ++---- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/cmd/compile/internal/gc/bimport.go b/src/cmd/compile/internal/gc/bimport.go index 713a7f4610..cde3476271 100644 --- a/src/cmd/compile/internal/gc/bimport.go +++ b/src/cmd/compile/internal/gc/bimport.go @@ -289,7 +289,7 @@ func (p *importer) pkg() *Pkg { } else if pkg.Name != name { Yyerror("conflicting package names %s and %s for path %q", pkg.Name, name, path) } - if incannedimport == 0 && myimportpath != "" && path == myimportpath { + if myimportpath != "" && path == myimportpath { Yyerror("import %q: package depends on %q (import cycle)", importpkg.Path, path) errorexit() } diff --git a/src/cmd/compile/internal/gc/go.go b/src/cmd/compile/internal/gc/go.go index 5c273bbd30..756c4d7358 100644 --- a/src/cmd/compile/internal/gc/go.go +++ b/src/cmd/compile/internal/gc/go.go @@ -231,8 +231,6 @@ var funcsyms []*Node var dclcontext Class // PEXTERN/PAUTO -var incannedimport int - var statuniqgen int // name generator for static temps var iota_ int32 diff --git a/src/cmd/compile/internal/gc/main.go b/src/cmd/compile/internal/gc/main.go index 42dfbdc773..a52ad8cc50 100644 --- a/src/cmd/compile/internal/gc/main.go +++ b/src/cmd/compile/internal/gc/main.go @@ -685,15 +685,12 @@ func loadsys() { block = 1 iota_ = -1000000 - incannedimport = 1 importpkg = Runtimepkg Import(bufio.NewReader(strings.NewReader(runtimeimport))) importpkg = unsafepkg Import(bufio.NewReader(strings.NewReader(unsafeimport))) - importpkg = nil - incannedimport = 0 } func importfile(f *Val, indent []byte) { diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index 49685cf13c..aee38874ad 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -2096,9 +2096,7 @@ OpSwitch: case ODCLTYPE: ok |= Etop n.Left = typecheck(n.Left, Etype) - if incannedimport == 0 { - checkwidth(n.Left.Type) - } + checkwidth(n.Left.Type) break OpSwitch } @@ -2114,7 +2112,7 @@ OpSwitch: } } - if safemode && incannedimport == 0 && importpkg == nil && compiling_wrappers == 0 && t != nil && t.Etype == TUNSAFEPTR { + if safemode && importpkg == nil && compiling_wrappers == 0 && t != nil && t.Etype == TUNSAFEPTR { Yyerror("cannot use unsafe.Pointer") } -- 2.50.0