Commit a9c0cc6f authored by Bryan C. Mills's avatar Bryan C. Mills

cmd/go: make 'go mod why' require a main module

Updates #32027

Change-Id: Ifc9427f35188c3fd356917d8510f3e01866ebca8
Reviewed-on: https://go-review.googlesource.com/c/go/+/205065
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarJay Conrod <jayconrod@google.com>
parent 95149147
......@@ -373,12 +373,14 @@ func runGet(cmd *base.Command, args []string) {
default:
// The argument is a package or module path.
if pkgs := modload.TargetPackages(path); len(pkgs) != 0 {
// The path is in the main module. Nothing to query.
if vers != "upgrade" && vers != "patch" {
base.Errorf("go get %s: can't request explicit version of path in main module", arg)
if modload.HasModRoot() {
if pkgs := modload.TargetPackages(path); len(pkgs) != 0 {
// The path is in the main module. Nothing to query.
if vers != "upgrade" && vers != "patch" {
base.Errorf("go get %s: can't request explicit version of path in main module", arg)
}
continue
}
continue
}
first := path
......
......@@ -406,6 +406,10 @@ func loadAll(testAll bool) []string {
// matching pattern, which may be relative to the working directory, under all
// build tag settings.
func TargetPackages(pattern string) []string {
// TargetPackages is relative to the main module, so ensure that the main
// module is a thing that can contain packages.
ModRoot()
return matchPackages(pattern, imports.AnyTags(), false, []module.Version{Target})
}
......
......@@ -67,10 +67,9 @@ go mod graph
! stdout .
! stderr .
# 'go mod why' should report that nothing is a dependency.
go mod why -m example.com/version
stdout 'does not need'
# 'go mod why' should fail, since there is no main module to depend on anything.
! go mod why -m example.com/version
stderr 'cannot find main module'
# 'go mod edit', 'go mod tidy', and 'go mod fmt' should fail:
# there is no go.mod file to edit.
......
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