diff --git a/internal/lsp/cache/check.go b/internal/lsp/cache/check.go index 9f7c310d7e..30811ff4d2 100644 --- a/internal/lsp/cache/check.go +++ b/internal/lsp/cache/check.go @@ -128,7 +128,7 @@ func (cph *checkPackageHandle) Check(ctx context.Context) (source.Package, error func (cph *checkPackageHandle) check(ctx context.Context) (*pkg, error) { v := cph.handle.Get(ctx) if v == nil { - return nil, ctx.Err() + return nil, errors.Errorf("check: %v", ctx.Err()) } data := v.(*checkPackageData) return data.pkg, data.err diff --git a/internal/lsp/cache/load.go b/internal/lsp/cache/load.go index 041acd5162..c36d866bc0 100644 --- a/internal/lsp/cache/load.go +++ b/internal/lsp/cache/load.go @@ -80,7 +80,7 @@ func (v *view) checkMetadata(ctx context.Context, f *goFile) (map[packageID]*met // Check if the context has been canceled before calling packages.Load. if ctx.Err() != nil { - return nil, ctx.Err() + return nil, errors.Errorf("checkMetadata: %v", ctx.Err()) } ctx, done := trace.StartSpan(ctx, "packages.Load", telemetry.File.Of(f.filename())) diff --git a/internal/lsp/cache/parse.go b/internal/lsp/cache/parse.go index 2f2f247286..57830b596d 100644 --- a/internal/lsp/cache/parse.go +++ b/internal/lsp/cache/parse.go @@ -70,7 +70,7 @@ func (h *parseGoHandle) Mode() source.ParseMode { func (h *parseGoHandle) Parse(ctx context.Context) (*ast.File, error) { v := h.handle.Get(ctx) if v == nil { - return nil, ctx.Err() + return nil, errors.Errorf("Parse: %v", ctx.Err()) } data := v.(*parseGoData) return data.ast, data.err diff --git a/internal/lsp/cache/pkg.go b/internal/lsp/cache/pkg.go index 03f3ce4e59..fe2639e2e0 100644 --- a/internal/lsp/cache/pkg.go +++ b/internal/lsp/cache/pkg.go @@ -14,6 +14,7 @@ import ( "golang.org/x/tools/go/analysis" "golang.org/x/tools/go/packages" "golang.org/x/tools/internal/lsp/source" + errors "golang.org/x/xerrors" ) // pkg contains the type information needed by the source package. @@ -55,10 +56,6 @@ type analysisEntry struct { } func (pkg *pkg) GetActionGraph(ctx context.Context, a *analysis.Analyzer) (*source.Action, error) { - if ctx.Err() != nil { - return nil, ctx.Err() - } - pkg.mu.Lock() e, ok := pkg.analyses[a] if ok { @@ -75,7 +72,7 @@ func (pkg *pkg) GetActionGraph(ctx context.Context, a *analysis.Analyzer) (*sour return pkg.GetActionGraph(ctx, a) } case <-ctx.Done(): - return nil, ctx.Err() + return nil, errors.Errorf("GetActionGraph: %v", ctx.Err()) } } else { // cache miss diff --git a/internal/lsp/cache/token.go b/internal/lsp/cache/token.go index aa6abc1ebc..81daf59828 100644 --- a/internal/lsp/cache/token.go +++ b/internal/lsp/cache/token.go @@ -51,7 +51,7 @@ func (h *tokenHandle) File() source.FileHandle { func (h *tokenHandle) Token(ctx context.Context) (*token.File, error) { v := h.handle.Get(ctx) if v == nil { - return nil, ctx.Err() + return nil, errors.Errorf("Token: %v", ctx.Err()) } data := v.(*tokenData) return data.tok, data.err diff --git a/internal/lsp/source/analysis.go b/internal/lsp/source/analysis.go index aba342cdf8..8046b37c6b 100644 --- a/internal/lsp/source/analysis.go +++ b/internal/lsp/source/analysis.go @@ -26,8 +26,9 @@ import ( func analyze(ctx context.Context, v View, cphs []CheckPackageHandle, analyzers []*analysis.Analyzer) ([]*Action, error) { ctx, done := trace.StartSpan(ctx, "source.analyze") defer done() + if ctx.Err() != nil { - return nil, ctx.Err() + return nil, errors.Errorf("analyze: %v", ctx.Err()) } // Build nodes for initial packages.