Commit 421d35cf authored by Bryan C. Mills's avatar Bryan C. Mills

cmd/go: suppress more errors in package-to-module loading

In CL 197059, I suppressed errors if the target package was already found.
However, that does not cover the case of passing a '/v2' module path to
'go get' when the module does not contain a package at its root.

This CL is a minimal fix for that case, intended to be backportable to 1.13.

(Longer term, I intend to rework the version-validation check to treat
all mismatched paths as ErrNotExist.)

Fixes #34746
Updates #34383

Change-Id: Ia963c2ea00fae424812b8f46a4d6c2c668252147
Reviewed-on: https://go-review.googlesource.com/c/go/+/199839
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarJay Conrod <jayconrod@google.com>
parent 0b204f95
...@@ -472,10 +472,10 @@ func queryPrefixModules(candidateModules []string, queryModule func(path string) ...@@ -472,10 +472,10 @@ func queryPrefixModules(candidateModules []string, queryModule func(path string)
notExistErr = rErr notExistErr = rErr
} }
} else if err == nil { } else if err == nil {
if len(found) > 0 { if len(found) > 0 || noPackage != nil {
// golang.org/issue/34094: If we have already found a module // golang.org/issue/34094: If we have already found a module that
// containing the target package, ignore errors for modules with // could potentially contain the target package, ignore unclassified
// shorter paths. // errors for modules with shorter paths.
// golang.org/issue/34383 is a special case of this: if we have // golang.org/issue/34383 is a special case of this: if we have
// already found example.com/foo/v2@v2.0.0 with a matching go.mod // already found example.com/foo/v2@v2.0.0 with a matching go.mod
......
...@@ -13,6 +13,11 @@ go get -d vcs-test.golang.org/git/v3pkg.git/v3@v3.0.0 ...@@ -13,6 +13,11 @@ go get -d vcs-test.golang.org/git/v3pkg.git/v3@v3.0.0
go list -m vcs-test.golang.org/git/v3pkg.git/v3 go list -m vcs-test.golang.org/git/v3pkg.git/v3
stdout '^vcs-test.golang.org/git/v3pkg.git/v3 v3.0.0$' stdout '^vcs-test.golang.org/git/v3pkg.git/v3 v3.0.0$'
go get -d vcs-test.golang.org/git/empty-v2-without-v1.git/v2@v2.0.0
go list -m vcs-test.golang.org/git/empty-v2-without-v1.git/v2
stdout '^vcs-test.golang.org/git/empty-v2-without-v1.git/v2 v2.0.0$'
-- go.mod -- -- go.mod --
module example.com module example.com
go 1.13 go 1.13
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment