diff --git a/internal/lsp/cache/check.go b/internal/lsp/cache/check.go index 30e4af2a22..24136170c6 100644 --- a/internal/lsp/cache/check.go +++ b/internal/lsp/cache/check.go @@ -330,13 +330,16 @@ func typeCheck(ctx context.Context, fset *token.FileSet, m *metadata, mode sourc return nil, ctx.Err() } - for _, e := range rawErrors { - srcErr, err := sourceError(ctx, fset, pkg, e) - if err != nil { - log.Error(ctx, "unable to compute error positions", err, telemetry.Package.Of(pkg.ID())) - continue + // We don't care about a package's errors unless we have parsed it in full. + if mode == source.ParseFull { + for _, e := range rawErrors { + srcErr, err := sourceError(ctx, fset, pkg, e) + if err != nil { + log.Error(ctx, "unable to compute error positions", err, telemetry.Package.Of(pkg.ID())) + continue + } + pkg.errors = append(pkg.errors, srcErr) } - pkg.errors = append(pkg.errors, srcErr) } return pkg, nil }