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

cmd/go: report an error for 'go list -m ...' outside a module

Previously, we just reported an error for "all". Now we report an
error for any pattern that matches modules in the build list. The
build list can only contain the module "command-line-arguments", so
these patterns are not meaningful.

Fixes #35728

Change-Id: Ibc736491ec9164588f9657c09d1b9683b33cf1de
Reviewed-on: https://go-review.googlesource.com/c/go/+/208222
Run-TryBot: Jay Conrod <jayconrod@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
Jay Conrod 2019-11-21 12:50:14 -05:00
parent 37715cce69
commit 2434869858
2 changed files with 9 additions and 2 deletions

View File

@ -57,8 +57,8 @@ func listModules(args []string, listVersions bool) []*modinfo.ModulePublic {
if search.IsRelativePath(arg) { if search.IsRelativePath(arg) {
base.Fatalf("go: cannot use relative path %s to specify module", arg) base.Fatalf("go: cannot use relative path %s to specify module", arg)
} }
if !HasModRoot() && arg == "all" { if !HasModRoot() && (arg == "all" || strings.Contains(arg, "...")) {
base.Fatalf(`go: cannot match "all": working directory is not part of a module`) base.Fatalf("go: cannot match %q: working directory is not part of a module", arg)
} }
if i := strings.Index(arg, "@"); i >= 0 { if i := strings.Index(arg, "@"); i >= 0 {
path := arg[:i] path := arg[:i]

View File

@ -56,6 +56,13 @@ stderr 'go: cannot match "all": working directory is not part of a module'
stderr 'go: cannot match "all": working directory is not part of a module' stderr 'go: cannot match "all": working directory is not part of a module'
! stdout 'example.com/version' ! stdout 'example.com/version'
# 'go list -m' with wildcards should fail. Wildcards match modules in the
# build list, so they aren't meaningful outside a module.
! go list -m ...
stderr 'go: cannot match "...": working directory is not part of a module'
! go list -m rsc.io/quote/...
stderr 'go: cannot match "rsc.io/quote/...": working directory is not part of a module'
# 'go clean' should skip the current directory if it isn't in a module. # 'go clean' should skip the current directory if it isn't in a module.
go clean -n go clean -n