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>
if search.IsRelativePath(arg) {
base.Fatalf("go: cannot use relative path %s to specify module", arg)
}
- if !HasModRoot() && arg == "all" {
- base.Fatalf(`go: cannot match "all": working directory is not part of a module`)
+ if !HasModRoot() && (arg == "all" || strings.Contains(arg, "...")) {
+ base.Fatalf("go: cannot match %q: working directory is not part of a module", arg)
}
if i := strings.Index(arg, "@"); i >= 0 {
path := arg[:i]
stderr 'go: cannot match "all": working directory is not part of a module'
! 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 -n