1
0
mirror of https://github.com/golang/go synced 2024-09-24 05:20:13 -06:00

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 <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Matthew Dempsky 2016-09-12 13:39:54 -07:00
parent 4c83d29144
commit 1ee5446414
4 changed files with 3 additions and 10 deletions

View File

@ -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()
}

View File

@ -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

View File

@ -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) {

View File

@ -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")
}