Skip to content

Commit e95ac1b

Browse files
authored
fix: typecheck issues should never be ignored (#4870)
1 parent 597b32a commit e95ac1b

8 files changed

+28
-18
lines changed

pkg/result/processors/autogenerated_exclude.go

-5
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,6 @@ func (p *AutogeneratedExclude) Process(issues []result.Issue) ([]result.Issue, e
6363
func (*AutogeneratedExclude) Finish() {}
6464

6565
func (p *AutogeneratedExclude) shouldPassIssue(issue *result.Issue) (bool, error) {
66-
if issue.FromLinter == typeCheckName {
67-
// don't hide typechecking errors in generated files: users expect to see why the project isn't compiling
68-
return true, nil
69-
}
70-
7166
if filepath.Base(issue.FilePath()) == "go.mod" {
7267
return true, nil
7368
}

pkg/result/processors/autogenerated_exclude_test.go

-8
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,6 @@ func Test_shouldPassIssue(t *testing.T) {
158158
issue *result.Issue
159159
assert assert.BoolAssertionFunc
160160
}{
161-
{
162-
desc: "typecheck issue",
163-
mode: AutogeneratedModeLax,
164-
issue: &result.Issue{
165-
FromLinter: "typecheck",
166-
},
167-
assert: assert.True,
168-
},
169161
{
170162
desc: "lax ",
171163
mode: AutogeneratedModeLax,

pkg/result/processors/invalid_issue.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func (InvalidIssue) Name() string {
2222
}
2323

2424
func (p InvalidIssue) Process(issues []result.Issue) ([]result.Issue, error) {
25-
tcIssues := filterIssues(issues, func(issue *result.Issue) bool {
25+
tcIssues := filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
2626
return issue.FromLinter == typeCheckName
2727
})
2828

pkg/result/processors/issues.go

+23
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,23 @@ import (
77
)
88

99
func filterIssues(issues []result.Issue, filter func(issue *result.Issue) bool) []result.Issue {
10+
retIssues := make([]result.Issue, 0, len(issues))
11+
for i := range issues {
12+
if issues[i].FromLinter == typeCheckName {
13+
// don't hide typechecking errors in generated files: users expect to see why the project isn't compiling
14+
retIssues = append(retIssues, issues[i])
15+
continue
16+
}
17+
18+
if filter(&issues[i]) {
19+
retIssues = append(retIssues, issues[i])
20+
}
21+
}
22+
23+
return retIssues
24+
}
25+
26+
func filterIssuesUnsafe(issues []result.Issue, filter func(issue *result.Issue) bool) []result.Issue {
1027
retIssues := make([]result.Issue, 0, len(issues))
1128
for i := range issues {
1229
if filter(&issues[i]) {
@@ -20,6 +37,12 @@ func filterIssues(issues []result.Issue, filter func(issue *result.Issue) bool)
2037
func filterIssuesErr(issues []result.Issue, filter func(issue *result.Issue) (bool, error)) ([]result.Issue, error) {
2138
retIssues := make([]result.Issue, 0, len(issues))
2239
for i := range issues {
40+
if issues[i].FromLinter == typeCheckName {
41+
// don't hide typechecking errors in generated files: users expect to see why the project isn't compiling
42+
retIssues = append(retIssues, issues[i])
43+
continue
44+
}
45+
2346
ok, err := filter(&issues[i])
2447
if err != nil {
2548
return nil, fmt.Errorf("can't filter issue %#v: %w", issues[i], err)

pkg/result/processors/max_from_linter.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (p *MaxFromLinter) Process(issues []result.Issue) ([]result.Issue, error) {
3333
return issues, nil
3434
}
3535

36-
return filterIssues(issues, func(issue *result.Issue) bool {
36+
return filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
3737
if issue.Replacement != nil && p.cfg.Issues.NeedFix {
3838
// we need to fix all issues at once => we need to return all of them
3939
return true

pkg/result/processors/max_per_file_from_linter.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (*MaxPerFileFromLinter) Name() string {
3333
}
3434

3535
func (p *MaxPerFileFromLinter) Process(issues []result.Issue) ([]result.Issue, error) {
36-
return filterIssues(issues, func(issue *result.Issue) bool {
36+
return filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
3737
limit := p.maxPerFileFromLinterConfig[issue.FromLinter]
3838
if limit == 0 {
3939
return true

pkg/result/processors/max_same_issues.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (p *MaxSameIssues) Process(issues []result.Issue) ([]result.Issue, error) {
3535
return issues, nil
3636
}
3737

38-
return filterIssues(issues, func(issue *result.Issue) bool {
38+
return filterIssuesUnsafe(issues, func(issue *result.Issue) bool {
3939
if issue.Replacement != nil && p.cfg.Issues.NeedFix {
4040
// we need to fix all issues at once => we need to return all of them
4141
return true

pkg/result/processors/uniq_by_line.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (p *UniqByLine) Process(issues []result.Issue) ([]result.Issue, error) {
3030
return issues, nil
3131
}
3232

33-
return filterIssues(issues, p.shouldPassIssue), nil
33+
return filterIssuesUnsafe(issues, p.shouldPassIssue), nil
3434
}
3535

3636
func (*UniqByLine) Finish() {}

0 commit comments

Comments
 (0)