1
0
mirror of https://github.com/golang/go synced 2024-09-29 13:34:30 -06:00

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>
This commit is contained in:
Jay Conrod 2020-04-03 10:42:55 -04:00
parent d78639519d
commit c4f875e84e
3 changed files with 33 additions and 1 deletions

View File

@ -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)

View File

@ -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"}

View File

@ -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