diff options
author | Jay Conrod <jayconrod@google.com> | 2020-12-11 16:45:28 -0500 |
---|---|---|
committer | Jay Conrod <jayconrod@google.com> | 2020-12-14 15:03:28 +0000 |
commit | 451b6b38fd3f87957c39fdb6572740f74ea27931 (patch) | |
tree | 1218fb0833e2b2c8a91a89a0c481a26df9c35d33 /src/cmd/go/internal/list/list.go | |
parent | 0a02371b0576964e81c3b40d328db9a3ef3b031b (diff) | |
download | go-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.go | 17 |
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() } |