diff --git a/internal/lsp/cache/load.go b/internal/lsp/cache/load.go index c3357c5ebd..e824b066a8 100644 --- a/internal/lsp/cache/load.go +++ b/internal/lsp/cache/load.go @@ -66,10 +66,11 @@ func (s *snapshot) load(ctx context.Context, scope interface{}) ([]*metadata, er cfg := s.view.Config(ctx) pkgs, err := packages.Load(cfg, query) - // If the context was canceled, return early. - // Otherwise, we might be type-checking an incomplete result. - if err == context.Canceled { - return nil, err + // If the context was canceled, return early. Otherwise, we might be + // type-checking an incomplete result. Check the context directly, + // because go/packages adds extra information to the error. + if ctx.Err() != nil { + return nil, ctx.Err() } log.Print(ctx, "go/packages.Load", tag.Of("query", query), tag.Of("packages", len(pkgs))) diff --git a/internal/lsp/source/diagnostics.go b/internal/lsp/source/diagnostics.go index 9dec184415..6929f9b779 100644 --- a/internal/lsp/source/diagnostics.go +++ b/internal/lsp/source/diagnostics.go @@ -117,6 +117,9 @@ func PackageDiagnostics(ctx context.Context, snapshot Snapshot, ph PackageHandle // Updates to the diagnostics for this package may need to be propagated. reverseDeps, err := snapshot.GetReverseDependencies(ctx, pkg.ID()) if err != nil { + if err == context.Canceled { + return nil, warningMsg, err + } log.Error(ctx, "no reverse dependencies", err) return reports, warningMsg, nil }