mirror of
https://github.com/golang/go
synced 2024-11-18 16:04:44 -07:00
internal/lsp: check if the go/packages context has been canceled
Recently been noticing errors where we don't have full metadata for a given package. It seems to me that, since we added the context to the packages.Config, there have been cases where the context is canceled on the first load, and then we type-check with incomplete data. I'm still not sure if allowing go/packages to be canceled is the correct approach. Change-Id: I6767ce763538bd579458c8f8db07f15c9eec7b4a Reviewed-on: https://go-review.googlesource.com/c/tools/+/201518 Run-TryBot: Rebecca Stambler <rstambler@golang.org> Reviewed-by: Muir Manders <muir@mnd.rs> Reviewed-by: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
eec4c98bf5
commit
f6a1a6ff8e
8
internal/lsp/cache/load.go
vendored
8
internal/lsp/cache/load.go
vendored
@ -39,8 +39,14 @@ func (s *snapshot) load(ctx context.Context, uri span.URI) ([]*metadata, error)
|
||||
|
||||
cfg := s.view.Config(ctx)
|
||||
pkgs, err := packages.Load(cfg, fmt.Sprintf("file=%s", uri.Filename()))
|
||||
log.Print(ctx, "go/packages.Load", tag.Of("packages", len(pkgs)))
|
||||
|
||||
// If the context was canceled, return early.
|
||||
// Otherwise, we might be type-checking an incomplete result.
|
||||
if err == context.Canceled {
|
||||
return nil, errors.Errorf("no metadata for %s: %v", uri.Filename(), err)
|
||||
}
|
||||
|
||||
log.Print(ctx, "go/packages.Load", tag.Of("packages", len(pkgs)))
|
||||
if len(pkgs) == 0 {
|
||||
if err == nil {
|
||||
err = errors.Errorf("go/packages.Load: no packages found for %s", uri)
|
||||
|
Loading…
Reference in New Issue
Block a user