aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/list/list.go
diff options
context:
space:
mode:
authorJay Conrod <jayconrod@google.com>2020-12-11 16:45:28 -0500
committerJay Conrod <jayconrod@google.com>2020-12-14 15:03:28 +0000
commit451b6b38fd3f87957c39fdb6572740f74ea27931 (patch)
tree1218fb0833e2b2c8a91a89a0c481a26df9c35d33 /src/cmd/go/internal/list/list.go
parent0a02371b0576964e81c3b40d328db9a3ef3b031b (diff)
downloadgo-451b6b38fd3f87957c39fdb6572740f74ea27931.tar.gz
go-451b6b38fd3f87957c39fdb6572740f74ea27931.zip
cmd/go: refactor error reporting in internal/load
Replaced load.PackagesForBuild with a new function, load.CheckPackageErrors. Callers should now call PackagesAndErrors, then CheckPackageErrors for the same functionality. Removed load.Packages. Callers should call base.Errorf and filter the package list as needed. This gives callers more flexibility in handling package load errors. For #42638 Change-Id: Id75463ba695adc1ca3f8693ceb2c8978b74a3500 Reviewed-on: https://go-review.googlesource.com/c/go/+/277354 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Jay Conrod <jayconrod@google.com> Reviewed-by: Bryan C. Mills <bcmills@google.com>
Diffstat (limited to 'src/cmd/go/internal/list/list.go')
-rw-r--r--src/cmd/go/internal/list/list.go17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/cmd/go/internal/list/list.go b/src/cmd/go/internal/list/list.go
index 9af9dbb856..ce6f579c05 100644
--- a/src/cmd/go/internal/list/list.go
+++ b/src/cmd/go/internal/list/list.go
@@ -471,11 +471,18 @@ func runList(ctx context.Context, cmd *base.Command, args []string) {
}
load.IgnoreImports = *listFind
- var pkgs []*load.Package
- if *listE {
- pkgs = load.PackagesAndErrors(ctx, args)
- } else {
- pkgs = load.Packages(ctx, args)
+ pkgs := load.PackagesAndErrors(ctx, args)
+ if !*listE {
+ w := 0
+ for _, pkg := range pkgs {
+ if pkg.Error != nil {
+ base.Errorf("%v", pkg.Error)
+ continue
+ }
+ pkgs[w] = pkg
+ w++
+ }
+ pkgs = pkgs[:w]
base.ExitIfErrors()
}