aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/modload/load.go
diff options
context:
space:
mode:
authorBryan C. Mills <bcmills@google.com>2021-02-26 13:28:23 -0500
committerBryan C. Mills <bcmills@google.com>2021-03-18 14:43:33 +0000
commite726e2a6087683eb21afe79ef8b5a1dbef80b0f1 (patch)
tree39c9a7116d1f33052048d0969b0cb18be5a4fa0a /src/cmd/go/internal/modload/load.go
parent6b6ea3271fd4f0ed99d5390461db9fa45ce4c164 (diff)
downloadgo-e726e2a6087683eb21afe79ef8b5a1dbef80b0f1.tar.gz
go-e726e2a6087683eb21afe79ef8b5a1dbef80b0f1.zip
cmd/go: suppress errors for 'go get' of module paths that are also constrained-out packages
Fixes #33526 Change-Id: Iedd2d6dbe440499bf074ac632513319a22f2d648 Reviewed-on: https://go-review.googlesource.com/c/go/+/297009 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src/cmd/go/internal/modload/load.go')
-rw-r--r--src/cmd/go/internal/modload/load.go36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go
index 2e62a7659f..1be6a71bbf 100644
--- a/src/cmd/go/internal/modload/load.go
+++ b/src/cmd/go/internal/modload/load.go
@@ -181,6 +181,15 @@ type PackageOpts struct {
// future version).
SilenceMissingStdImports bool
+ // SilenceNoGoErrors indicates that LoadPackages should not print
+ // imports.ErrNoGo errors.
+ // This allows the caller to invoke LoadPackages (and report other errors)
+ // without knowing whether the requested packages exist for the given tags.
+ //
+ // Note that if a requested package does not exist *at all*, it will fail
+ // during module resolution and the error will not be suppressed.
+ SilenceNoGoErrors bool
+
// SilenceUnmatchedWarnings suppresses the warnings normally emitted for
// patterns that did not match any packages.
SilenceUnmatchedWarnings bool
@@ -290,6 +299,10 @@ func LoadPackages(ctx context.Context, opts PackageOpts, patterns ...string) (ma
// Report errors, if any.
checkMultiplePaths()
for _, pkg := range loaded.pkgs {
+ if !pkg.isTest() {
+ loadedPackages = append(loadedPackages, pkg.path)
+ }
+
if pkg.err != nil {
if sumErr := (*ImportMissingSumError)(nil); errors.As(pkg.err, &sumErr) {
if importer := pkg.stack; importer != nil {
@@ -298,23 +311,24 @@ func LoadPackages(ctx context.Context, opts PackageOpts, patterns ...string) (ma
sumErr.importerIsTest = importer.testOf != nil
}
}
- silence := opts.SilenceErrors
+
+ if opts.SilenceErrors {
+ continue
+ }
if stdErr := (*ImportMissingError)(nil); errors.As(pkg.err, &stdErr) &&
stdErr.isStd && opts.SilenceMissingStdImports {
- silence = true
+ continue
+ }
+ if opts.SilenceNoGoErrors && errors.Is(pkg.err, imports.ErrNoGo) {
+ continue
}
- if !silence {
- if opts.AllowErrors {
- fmt.Fprintf(os.Stderr, "%s: %v\n", pkg.stackText(), pkg.err)
- } else {
- base.Errorf("%s: %v", pkg.stackText(), pkg.err)
- }
+ if opts.AllowErrors {
+ fmt.Fprintf(os.Stderr, "%s: %v\n", pkg.stackText(), pkg.err)
+ } else {
+ base.Errorf("%s: %v", pkg.stackText(), pkg.err)
}
}
- if !pkg.isTest() {
- loadedPackages = append(loadedPackages, pkg.path)
- }
}
if !opts.SilenceErrors {
// Also list errors in matching patterns (such as directory permission