From bb8aefc696b9add0862ca2f5f56272cf9540748d Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Wed, 24 Apr 2019 19:31:07 -0400 Subject: [PATCH] internal/lsp: return errors when we can't find a package This will allow us to surface these errors as diagnostics. Change-Id: Ic8ad11ba43c08be6f391c0e2aa95015183461133 Reviewed-on: https://go-review.googlesource.com/c/tools/+/173780 Reviewed-by: Ian Cottrell Run-TryBot: Rebecca Stambler --- internal/lsp/cache/check.go | 8 +++++++- internal/lsp/cache/file.go | 3 +-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/internal/lsp/cache/check.go b/internal/lsp/cache/check.go index f7b1b3ee..0f99248d 100644 --- a/internal/lsp/cache/check.go +++ b/internal/lsp/cache/check.go @@ -91,7 +91,13 @@ func (v *View) checkMetadata(ctx context.Context, f *File) ([]packages.Error, er if err == nil { err = fmt.Errorf("no packages found for %s", f.filename) } - return nil, err + // Return this error as a diagnostic to the user. + return []packages.Error{ + { + Msg: err.Error(), + Kind: packages.ListError, + }, + }, err } for _, pkg := range pkgs { // If the package comes back with errors from `go list`, don't bother diff --git a/internal/lsp/cache/file.go b/internal/lsp/cache/file.go index 0c9b0b2c..d7429c9f 100644 --- a/internal/lsp/cache/file.go +++ b/internal/lsp/cache/file.go @@ -89,8 +89,7 @@ func (f *File) GetPackage(ctx context.Context) source.Package { f.view.mu.Lock() defer f.view.mu.Unlock() if f.pkg == nil || len(f.view.contentChanges) > 0 { - errs, err := f.view.parse(ctx, f) - if err != nil { + if errs, err := f.view.parse(ctx, f); err != nil { // Create diagnostics for errors if we are able to. if len(errs) > 0 { return &Package{errors: errs}