mirror of https://github.com/golang/go.git
cmd/compile: remove a bunch of dead noder code
This code was only needed for supporting -G=0 mode, which is now gone. Change-Id: I504887ab179e357a3cd21ef582f9edae49f6cbb6 Reviewed-on: https://go-review.googlesource.com/c/go/+/388536 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Trust: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
302af4be8e
commit
ad52356536
|
|
@ -11,7 +11,6 @@ import (
|
|||
"os"
|
||||
pathpkg "path"
|
||||
"runtime"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
|
@ -20,7 +19,6 @@ import (
|
|||
"cmd/compile/internal/base"
|
||||
"cmd/compile/internal/importer"
|
||||
"cmd/compile/internal/ir"
|
||||
"cmd/compile/internal/syntax"
|
||||
"cmd/compile/internal/typecheck"
|
||||
"cmd/compile/internal/types"
|
||||
"cmd/compile/internal/types2"
|
||||
|
|
@ -28,7 +26,6 @@ import (
|
|||
"cmd/internal/bio"
|
||||
"cmd/internal/goobj"
|
||||
"cmd/internal/objabi"
|
||||
"cmd/internal/src"
|
||||
)
|
||||
|
||||
// haveLegacyImports records whether we've imported any packages
|
||||
|
|
@ -141,10 +138,6 @@ func openPackage(path string) (*os.File, error) {
|
|||
return nil, errors.New("file not found")
|
||||
}
|
||||
|
||||
// myheight tracks the local package's height based on packages
|
||||
// imported so far.
|
||||
var myheight int
|
||||
|
||||
// resolveImportPath resolves an import path as it appears in a Go
|
||||
// source file to the package's full path.
|
||||
func resolveImportPath(path string) (string, error) {
|
||||
|
|
@ -187,42 +180,6 @@ func resolveImportPath(path string) (string, error) {
|
|||
return path, nil
|
||||
}
|
||||
|
||||
func importfile(decl *syntax.ImportDecl) *types.Pkg {
|
||||
path, err := parseImportPath(decl.Path)
|
||||
if err != nil {
|
||||
base.Errorf("%s", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
pkg, _, err := readImportFile(path, typecheck.Target, nil, nil)
|
||||
if err != nil {
|
||||
base.Errorf("%s", err)
|
||||
return nil
|
||||
}
|
||||
|
||||
if pkg != types.UnsafePkg && pkg.Height >= myheight {
|
||||
myheight = pkg.Height + 1
|
||||
}
|
||||
return pkg
|
||||
}
|
||||
|
||||
func parseImportPath(pathLit *syntax.BasicLit) (string, error) {
|
||||
if pathLit.Kind != syntax.StringLit {
|
||||
return "", errors.New("import path must be a string")
|
||||
}
|
||||
|
||||
path, err := strconv.Unquote(pathLit.Value)
|
||||
if err != nil {
|
||||
return "", errors.New("import path must be a string")
|
||||
}
|
||||
|
||||
if err := checkImportPath(path, false); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return path, err
|
||||
}
|
||||
|
||||
// readImportFile reads the import file for the given package path and
|
||||
// returns its types.Pkg representation. If packages is non-nil, the
|
||||
// types2.Package representation is also returned.
|
||||
|
|
@ -467,135 +424,3 @@ func checkImportPath(path string, allowSpace bool) error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func pkgnotused(lineno src.XPos, path string, name string) {
|
||||
// If the package was imported with a name other than the final
|
||||
// import path element, show it explicitly in the error message.
|
||||
// Note that this handles both renamed imports and imports of
|
||||
// packages containing unconventional package declarations.
|
||||
// Note that this uses / always, even on Windows, because Go import
|
||||
// paths always use forward slashes.
|
||||
elem := path
|
||||
if i := strings.LastIndex(elem, "/"); i >= 0 {
|
||||
elem = elem[i+1:]
|
||||
}
|
||||
if name == "" || elem == name {
|
||||
base.ErrorfAt(lineno, "imported and not used: %q", path)
|
||||
} else {
|
||||
base.ErrorfAt(lineno, "imported and not used: %q as %s", path, name)
|
||||
}
|
||||
}
|
||||
|
||||
func mkpackage(pkgname string) {
|
||||
if types.LocalPkg.Name == "" {
|
||||
if pkgname == "_" {
|
||||
base.Errorf("invalid package name _")
|
||||
}
|
||||
types.LocalPkg.Name = pkgname
|
||||
} else {
|
||||
if pkgname != types.LocalPkg.Name {
|
||||
base.Errorf("package %s; expected %s", pkgname, types.LocalPkg.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func clearImports() {
|
||||
type importedPkg struct {
|
||||
pos src.XPos
|
||||
path string
|
||||
name string
|
||||
}
|
||||
var unused []importedPkg
|
||||
|
||||
for _, s := range types.LocalPkg.Syms {
|
||||
n := ir.AsNode(s.Def)
|
||||
if n == nil {
|
||||
continue
|
||||
}
|
||||
if n.Op() == ir.OPACK {
|
||||
// throw away top-level package name left over
|
||||
// from previous file.
|
||||
// leave s->block set to cause redeclaration
|
||||
// errors if a conflicting top-level name is
|
||||
// introduced by a different file.
|
||||
p := n.(*ir.PkgName)
|
||||
if !p.Used && base.SyntaxErrors() == 0 {
|
||||
unused = append(unused, importedPkg{p.Pos(), p.Pkg.Path, s.Name})
|
||||
}
|
||||
s.Def = nil
|
||||
continue
|
||||
}
|
||||
if s.Def != nil && s.Def.Sym() != s {
|
||||
// throw away top-level name left over
|
||||
// from previous import . "x"
|
||||
// We'll report errors after type checking in CheckDotImports.
|
||||
s.Def = nil
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
sort.Slice(unused, func(i, j int) bool { return unused[i].pos.Before(unused[j].pos) })
|
||||
for _, pkg := range unused {
|
||||
pkgnotused(pkg.pos, pkg.path, pkg.name)
|
||||
}
|
||||
}
|
||||
|
||||
// CheckDotImports reports errors for any unused dot imports.
|
||||
func CheckDotImports() {
|
||||
for _, pack := range dotImports {
|
||||
if !pack.Used {
|
||||
base.ErrorfAt(pack.Pos(), "imported and not used: %q", pack.Pkg.Path)
|
||||
}
|
||||
}
|
||||
|
||||
// No longer needed; release memory.
|
||||
dotImports = nil
|
||||
typecheck.DotImportRefs = nil
|
||||
}
|
||||
|
||||
// dotImports tracks all PkgNames that have been dot-imported.
|
||||
var dotImports []*ir.PkgName
|
||||
|
||||
// find all the exported symbols in package referenced by PkgName,
|
||||
// and make them available in the current package
|
||||
func importDot(pack *ir.PkgName) {
|
||||
if typecheck.DotImportRefs == nil {
|
||||
typecheck.DotImportRefs = make(map[*ir.Ident]*ir.PkgName)
|
||||
}
|
||||
|
||||
opkg := pack.Pkg
|
||||
for _, s := range opkg.Syms {
|
||||
if s.Def == nil {
|
||||
if _, ok := typecheck.DeclImporter[s]; !ok {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if !types.IsExported(s.Name) || strings.ContainsRune(s.Name, 0xb7) { // 0xb7 = center dot
|
||||
continue
|
||||
}
|
||||
s1 := typecheck.Lookup(s.Name)
|
||||
if s1.Def != nil {
|
||||
pkgerror := fmt.Sprintf("during import %q", opkg.Path)
|
||||
typecheck.Redeclared(base.Pos, s1, pkgerror)
|
||||
continue
|
||||
}
|
||||
|
||||
id := ir.NewIdent(src.NoXPos, s)
|
||||
typecheck.DotImportRefs[id] = pack
|
||||
s1.Def = id
|
||||
s1.Block = 1
|
||||
}
|
||||
|
||||
dotImports = append(dotImports, pack)
|
||||
}
|
||||
|
||||
// importName is like oldname,
|
||||
// but it reports an error if sym is from another package and not exported.
|
||||
func importName(sym *types.Sym) ir.Node {
|
||||
n := oldname(sym)
|
||||
if !types.IsExported(sym.Name) && sym.Pkg != types.LocalPkg {
|
||||
n.SetDiag(true)
|
||||
base.Errorf("cannot refer to unexported name %s.%s", sym.Pkg.Name, sym.Name)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue