aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/modload/load.go
diff options
context:
space:
mode:
authorJay Conrod <jayconrod@google.com>2019-07-12 17:31:59 -0400
committerJay Conrod <jayconrod@google.com>2019-07-16 15:01:16 +0000
commit0da58d076a98a0fa027ea547b2a1c35147fd6e6e (patch)
tree2409540ac1c42a6f3bc1ed1732d79d9c9a13b8ea /src/cmd/go/internal/modload/load.go
parenta6a7b148f874b32a34e833893971b471cd9cdeb7 (diff)
downloadgo-0da58d076a98a0fa027ea547b2a1c35147fd6e6e.tar.gz
go-0da58d076a98a0fa027ea547b2a1c35147fd6e6e.zip
cmd/go: clarify error text for module path mismatch
This error occurs when a module is loaded with one name (for example, github.com/golang/lint) but declares a different path in its go.mod (golang.org/x/lint). The current text "unexpected module path" is confusing. It doesn't explain why the path was unexpected, and it's not clear what was expected. With this change, the error text includes the module and version containing the go.mod file with the error, the declared module path, and the loaded module path. The paths are vertically aligned so differences are visually obvious. As with other module version errors, the shortest chain of requirements is printed. This change supercedes CL 158477. Fixes #28489 Change-Id: Ieb07d00bcae182376d7be6aad111c84fbf784354 Reviewed-on: https://go-review.googlesource.com/c/go/+/185985 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
Diffstat (limited to 'src/cmd/go/internal/modload/load.go')
-rw-r--r--src/cmd/go/internal/modload/load.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go
index 81fb8b346f..c6a7c419fb 100644
--- a/src/cmd/go/internal/modload/load.go
+++ b/src/cmd/go/internal/modload/load.go
@@ -1136,7 +1136,9 @@ func (r *mvsReqs) required(mod module.Version) ([]module.Version, error) {
return nil, module.VersionError(mod, errors.New("parsing go.mod: missing module line"))
}
if mpath := f.Module.Mod.Path; mpath != origPath && mpath != mod.Path {
- return nil, module.VersionError(mod, fmt.Errorf("parsing go.mod: unexpected module path %q", mpath))
+ return nil, module.VersionError(mod, fmt.Errorf(`parsing go.mod:
+ module declares its path as: %s
+ but was loaded as: %s`, mod.Path, mpath))
}
if f.Go != nil {
r.versions.LoadOrStore(mod, f.Go.Version)