diff options
author | Jay Conrod <jayconrod@google.com> | 2020-04-03 10:42:55 -0400 |
---|---|---|
committer | Jay Conrod <jayconrod@google.com> | 2020-04-03 17:42:31 +0000 |
commit | c4f875e84e6ce3c09045fd00b72e4bb830d3e40e (patch) | |
tree | 51602818b68d3f4462e2bede372cfbd3857ddff6 | |
parent | d78639519df17bf7fb5a7facef007e90d6c0283c (diff) | |
download | go-c4f875e84e6ce3c09045fd00b72e4bb830d3e40e.tar.gz go-c4f875e84e6ce3c09045fd00b72e4bb830d3e40e.zip |
cmd/go: report original module path in error parsing replaced go.mod
MVS reports an error when a go.mod file declares a module path that
doesn't match the path it was required with. If the module is a
replacement, its declared path may be the original path (preferred) or
the replacement path.
This CL makes the reported error a little more clear: the "required as"
path should be the original required path, not the replacement path.
Fixes #38220
Change-Id: I08b50a100679a447c8803cca1d1b32bc115ec1b1
Reviewed-on: https://go-review.googlesource.com/c/go/+/227097
Run-TryBot: Jay Conrod <jayconrod@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
-rw-r--r-- | src/cmd/go/internal/modload/mvs.go | 2 | ||||
-rw-r--r-- | src/cmd/go/testdata/mod/example.com_quote_v1.5.2.txt | 9 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_load_replace_mismatch.txt | 23 |
3 files changed, 33 insertions, 1 deletions
diff --git a/src/cmd/go/internal/modload/mvs.go b/src/cmd/go/internal/modload/mvs.go index 50620e30b6..065a533e1f 100644 --- a/src/cmd/go/internal/modload/mvs.go +++ b/src/cmd/go/internal/modload/mvs.go @@ -148,7 +148,7 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) { if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path { return nil, module.VersionError(mod, fmt.Errorf(`parsing go.mod: module declares its path as: %s - but was required as: %s`, mpath, mod.Path)) + but was required as: %s`, mpath, origPath)) } if f.Go != nil { r.versions.LoadOrStore(mod, f.Go.Version) diff --git a/src/cmd/go/testdata/mod/example.com_quote_v1.5.2.txt b/src/cmd/go/testdata/mod/example.com_quote_v1.5.2.txt new file mode 100644 index 0000000000..05f7ae28a3 --- /dev/null +++ b/src/cmd/go/testdata/mod/example.com_quote_v1.5.2.txt @@ -0,0 +1,9 @@ +This module is a replacement for rsc.io/quote, but its go.mod file declares +a module path different from its location and the original module. + +-- .mod -- +module rsc.io/Quote + +go 1.14 +-- .info -- +{"Version":"v1.5.2"} diff --git a/src/cmd/go/testdata/script/mod_load_replace_mismatch.txt b/src/cmd/go/testdata/script/mod_load_replace_mismatch.txt new file mode 100644 index 0000000000..74dbb34b8a --- /dev/null +++ b/src/cmd/go/testdata/script/mod_load_replace_mismatch.txt @@ -0,0 +1,23 @@ +# If a replacement module declares a module path different from both +# the original module and its location, report an error with all three paths. +# In particular, the "required as" path should be the original. +# Verifies golang.org/issue/38220. +! go list . +cmp stderr want + +-- go.mod -- +module m + +require rsc.io/quote v1.5.2 + +replace rsc.io/quote v1.5.2 => example.com/quote v1.5.2 + +-- use.go -- +package use + +import _ "rsc.io/quote" + +-- want -- +go: example.com/quote@v1.5.2: parsing go.mod: + module declares its path as: rsc.io/Quote + but was required as: rsc.io/quote |