Skip to content

Commit 08e2406

Browse files
committed
internal/lsp/cache: avoid returning errors when building source.Errors
We don't want to return an error for the whole package when we are just building out error positions. Change-Id: I56b5b88ff2b4b44da8a372ade81cd9b1534235c4 Reviewed-on: https://go-review.googlesource.com/c/tools/+/206597 Reviewed-by: Heschi Kreinick <[email protected]> Run-TryBot: Heschi Kreinick <[email protected]> (cherry picked from commit 52adfe5) Reviewed-on: https://go-review.googlesource.com/c/tools/+/206877
1 parent 14c9c28 commit 08e2406

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

internal/lsp/cache/check.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,8 @@ func typeCheck(ctx context.Context, fset *token.FileSet, m *metadata, mode sourc
310310
for _, e := range rawErrors {
311311
srcErr, err := sourceError(ctx, fset, pkg, e)
312312
if err != nil {
313-
return nil, err
313+
log.Error(ctx, "unable to compute error positions", err, telemetry.Package.Of(pkg.ID()))
314+
continue
314315
}
315316
pkg.errors = append(pkg.errors, srcErr)
316317
}

internal/lsp/cache/errors.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import (
1212
"golang.org/x/tools/go/packages"
1313
"golang.org/x/tools/internal/lsp/protocol"
1414
"golang.org/x/tools/internal/lsp/source"
15+
"golang.org/x/tools/internal/lsp/telemetry"
1516
"golang.org/x/tools/internal/span"
17+
"golang.org/x/tools/internal/telemetry/log"
1618
errors "golang.org/x/xerrors"
1719
)
1820

@@ -40,7 +42,8 @@ func sourceError(ctx context.Context, fset *token.FileSet, pkg *pkg, e interface
4042
kind = source.ParseError
4143
spn, err = scannerErrorRange(ctx, fset, pkg, e.Pos)
4244
if err != nil {
43-
return nil, err
45+
log.Error(ctx, "no span for scanner.Error pos", err, telemetry.Package.Of(pkg.ID()))
46+
spn = span.Parse(e.Pos.String())
4447
}
4548

4649
case scanner.ErrorList:
@@ -52,9 +55,9 @@ func sourceError(ctx context.Context, fset *token.FileSet, pkg *pkg, e interface
5255
kind = source.ParseError
5356
spn, err = scannerErrorRange(ctx, fset, pkg, e[0].Pos)
5457
if err != nil {
55-
return nil, err
58+
log.Error(ctx, "no span for scanner.Error pos", err, telemetry.Package.Of(pkg.ID()))
59+
spn = span.Parse(e[0].Pos.String())
5660
}
57-
5861
case types.Error:
5962
msg = e.Msg
6063
kind = source.TypeError

0 commit comments

Comments
 (0)