@@ -19,6 +19,7 @@ import (
19
19
"golang.org/x/tools/internal/lsp/telemetry"
20
20
"golang.org/x/tools/internal/memoize"
21
21
"golang.org/x/tools/internal/telemetry/log"
22
+ "golang.org/x/tools/internal/telemetry/tag"
22
23
errors "golang.org/x/xerrors"
23
24
)
24
25
@@ -319,13 +320,15 @@ func runAnalysis(ctx context.Context, fset *token.FileSet, analyzer *analysis.An
319
320
return data
320
321
}
321
322
data .result , data .err = pass .Analyzer .Run (pass )
322
- if data .err == nil {
323
- if got , want := reflect .TypeOf (data .result ), pass .Analyzer .ResultType ; got != want {
324
- data .err = errors .Errorf (
325
- "internal error: on package %s, analyzer %s returned a result of type %v, but declared ResultType %v" ,
326
- pass .Pkg .Path (), pass .Analyzer , got , want )
327
- return data
328
- }
323
+ if data .err != nil {
324
+ return data
325
+ }
326
+
327
+ if got , want := reflect .TypeOf (data .result ), pass .Analyzer .ResultType ; got != want {
328
+ data .err = errors .Errorf (
329
+ "internal error: on package %s, analyzer %s returned a result of type %v, but declared ResultType %v" ,
330
+ pass .Pkg .Path (), pass .Analyzer , got , want )
331
+ return data
329
332
}
330
333
331
334
// disallow calls after Run
@@ -339,8 +342,8 @@ func runAnalysis(ctx context.Context, fset *token.FileSet, analyzer *analysis.An
339
342
for _ , diag := range diagnostics {
340
343
srcErr , err := sourceError (ctx , fset , pkg , diag )
341
344
if err != nil {
342
- data . err = err
343
- return data
345
+ log . Error ( ctx , "unable to compute analysis error position" , err , tag . Of ( "category" , diag . Category ), telemetry . Package . Of ( pkg . ID ()))
346
+ continue
344
347
}
345
348
data .diagnostics = append (data .diagnostics , srcErr )
346
349
}
0 commit comments