diff options
author | Michael Matloob <matloob@golang.org> | 2020-01-24 17:21:48 -0500 |
---|---|---|
committer | Michael Matloob <matloob@golang.org> | 2020-02-25 22:42:00 +0000 |
commit | 0652c80e2afa14d62067be567c498c83a6485fd8 (patch) | |
tree | 84cc4c05a84c2dc2ca84d93430898c79c6311eca /src/cmd/go/internal/modload/load.go | |
parent | f0ee49b5bcde39ac6c36d3837666aa9a36383066 (diff) | |
download | go-0652c80e2afa14d62067be567c498c83a6485fd8.tar.gz go-0652c80e2afa14d62067be567c498c83a6485fd8.zip |
cmd/go: emit an error for extraneous files in GOROOT/src in module mode
If there's a go file immediately in GOROOT/src, it was probably
accidentally added by the user. Since that package shouldn't
exist, return an error if a user tries to list it. We're only making
this change for GOPATH mode because we don't want to break cases
where users have been doing this historically, but want to fix
this case for the future.
This also leaves open the weird cases where files are placed directly
in vendor directories.
Fixes #36587
Change-Id: I9738e47b1e89fd5048cbb8dd28e44648834b8ea7
Reviewed-on: https://go-review.googlesource.com/c/go/+/216381
Run-TryBot: Michael Matloob <matloob@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src/cmd/go/internal/modload/load.go')
-rw-r--r-- | src/cmd/go/internal/modload/load.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 89d906f194..b28776b81c 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -126,6 +126,12 @@ func ImportPathsQuiet(patterns []string, tags map[string]bool) []*search.Match { // It's not strictly necessary but helpful to keep the checks. if modRoot != "" && dir == modRoot { pkg = targetPrefix + if modRoot == cfg.GOROOTsrc { + // A package in GOROOT/src would have an empty path. + // Keep the path as cfg.GOROOTsrc. We'll report an error in Import. + // See golang.org/issue/36587. + pkg = modRoot + } } else if modRoot != "" && strings.HasPrefix(dir, modRoot+string(filepath.Separator)) && !strings.Contains(dir[len(modRoot):], "@") { suffix := filepath.ToSlash(dir[len(modRoot):]) if strings.HasPrefix(suffix, "/vendor/") { |