Skip to content

Commit

Permalink
cmd/go/internal/modload: inline doImport into doPkg
Browse files Browse the repository at this point in the history
doImport is itself a thin wrapper around Import, and doPkg is its only call
site. I'm having trouble following what doPkg is doing due to the indirection,
so I'm removing it.

Change-Id: I6167be68e869a36010a56a5869df50b1145ac813
Reviewed-on: https://go-review.googlesource.com/125837
Run-TryBot: Bryan C. Mills <[email protected]>
TryBot-Result: Gobot Gobot <[email protected]>
Reviewed-by: Russ Cox <[email protected]>
  • Loading branch information
Bryan C. Mills authored and jeet-parekh committed Jul 31, 2018
1 parent be13986 commit 4dc1f87
Showing 1 changed file with 11 additions and 21 deletions.
32 changes: 11 additions & 21 deletions src/cmd/go/internal/modload/load.go
Original file line number Diff line number Diff line change
Expand Up @@ -494,7 +494,17 @@ func (ld *loader) doPkg(item interface{}) {
pkg.mod = pkg.testOf.mod
imports = pkg.testOf.testImports
} else {
pkg.mod, pkg.dir, pkg.err = ld.doImport(pkg.path)
if strings.Contains(pkg.path, "@") {
// Leave for error during load.
return
}
if build.IsLocalImport(pkg.path) {
// Leave for error during load.
// (Module mode does not allow local imports.)
return
}

pkg.mod, pkg.dir, pkg.err = Import(pkg.path)
if pkg.dir == "" {
return
}
Expand Down Expand Up @@ -526,26 +536,6 @@ func (ld *loader) doPkg(item interface{}) {
}
}

// doImport finds the directory holding source code for the given import path.
// It returns the module containing the package (if any),
// the directory containing the package (if any),
// and any error encountered.
// Not all packages have modules: the ones in the standard library do not.
// Not all packages have directories: "unsafe" and "C" do not.
func (ld *loader) doImport(path string) (mod module.Version, dir string, err error) {
if strings.Contains(path, "@") {
// Leave for error during load.
return module.Version{}, "", nil
}
if build.IsLocalImport(path) {
// Leave for error during load.
// (Module mode does not allow local imports.)
return module.Version{}, "", nil
}

return Import(path)
}

// scanDir is like imports.ScanDir but elides known magic imports from the list,
// so that we do not go looking for packages that don't really exist.
//
Expand Down

0 comments on commit 4dc1f87

Please sign in to comment.