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>
} 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()
}
var dclcontext Class // PEXTERN/PAUTO
-var incannedimport int
-
var statuniqgen int // name generator for static temps
var iota_ int32
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) {
case ODCLTYPE:
ok |= Etop
n.Left = typecheck(n.Left, Etype)
- if incannedimport == 0 {
- checkwidth(n.Left.Type)
- }
+ checkwidth(n.Left.Type)
break 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")
}