1
- package goanalysis
1
+ package pkgerrors
2
2
3
3
import (
4
4
"errors"
7
7
"golang.org/x/tools/go/packages"
8
8
9
9
"github.com/golangci/golangci-lint/pkg/lint/linter"
10
- libpackages "github.com/golangci/golangci-lint/pkg/packages"
11
10
"github.com/golangci/golangci-lint/pkg/result"
12
11
)
13
12
@@ -19,7 +18,7 @@ func (e *IllTypedError) Error() string {
19
18
return fmt .Sprintf ("errors in package: %v" , e .Pkg .Errors )
20
19
}
21
20
22
- func buildIssuesFromIllTypedError (errs []error , lintCtx * linter.Context ) ([]result.Issue , error ) {
21
+ func BuildIssuesFromIllTypedError (errs []error , lintCtx * linter.Context ) ([]result.Issue , error ) {
23
22
var issues []result.Issue
24
23
uniqReportedIssues := map [string ]bool {}
25
24
@@ -36,17 +35,17 @@ func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu
36
35
continue
37
36
}
38
37
39
- for _ , err := range libpackages . ExtractErrors (ill .Pkg ) {
40
- i , perr := parseError (err )
38
+ for _ , err := range extractErrors (ill .Pkg ) {
39
+ issue , perr := parseError (err )
41
40
if perr != nil { // failed to parse
42
41
if uniqReportedIssues [err .Msg ] {
43
42
continue
44
43
}
45
44
uniqReportedIssues [err .Msg ] = true
46
45
lintCtx .Log .Errorf ("typechecking error: %s" , err .Msg )
47
46
} else {
48
- i .Pkg = ill .Pkg // to save to cache later
49
- issues = append (issues , * i )
47
+ issue .Pkg = ill .Pkg // to save to cache later
48
+ issues = append (issues , * issue )
50
49
}
51
50
}
52
51
}
@@ -57,16 +56,3 @@ func buildIssuesFromIllTypedError(errs []error, lintCtx *linter.Context) ([]resu
57
56
58
57
return issues , nil
59
58
}
60
-
61
- func parseError (srcErr packages.Error ) (* result.Issue , error ) {
62
- pos , err := libpackages .ParseErrorPosition (srcErr .Pos )
63
- if err != nil {
64
- return nil , err
65
- }
66
-
67
- return & result.Issue {
68
- Pos : * pos ,
69
- Text : srcErr .Msg ,
70
- FromLinter : "typecheck" ,
71
- }, nil
72
- }
0 commit comments