Skip to content

Commit 6090d88

Browse files
checkers: make Checker constructor return error (#1020)
1 parent 51cc26f commit 6090d88

File tree

85 files changed

+191
-178
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+191
-178
lines changed

checkers/appendAssign_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ p.negatives = append(p.negatives, y)`
2424
p.positives = append(p.positives, x)
2525
p.negatives = append(p.negatives, y)`
2626

27-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
28-
return astwalk.WalkerForStmt(&appendAssignChecker{ctx: ctx})
27+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
28+
return astwalk.WalkerForStmt(&appendAssignChecker{ctx: ctx}), nil
2929
})
3030
}
3131

checkers/appendCombine_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ xs = append(xs, 1)
2020
xs = append(xs, 2)`
2121
info.After = `xs = append(xs, 1, 2)`
2222

23-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24-
return astwalk.WalkerForStmtList(&appendCombineChecker{ctx: ctx})
23+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
24+
return astwalk.WalkerForStmtList(&appendCombineChecker{ctx: ctx}), nil
2525
})
2626
}
2727

checkers/argOrder_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ func init() {
2020
info.Before = `strings.HasPrefix("#", userpass)`
2121
info.After = `strings.HasPrefix(userpass, "#")`
2222

23-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24-
return astwalk.WalkerForExpr(&argOrderChecker{ctx: ctx})
23+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
24+
return astwalk.WalkerForExpr(&argOrderChecker{ctx: ctx}), nil
2525
})
2626
}
2727

checkers/assignOp_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ func init() {
1919
info.Before = `x = x * 2`
2020
info.After = `x *= 2`
2121

22-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
23-
return astwalk.WalkerForStmt(&assignOpChecker{ctx: ctx})
22+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
23+
return astwalk.WalkerForStmt(&assignOpChecker{ctx: ctx}), nil
2424
})
2525
}
2626

checkers/badCall_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ func init() {
1717
info.Before = `strings.Replace(s, from, to, 0)`
1818
info.After = `strings.Replace(s, from, to, -1)`
1919

20-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
21-
return astwalk.WalkerForExpr(&badCallChecker{ctx: ctx})
20+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
21+
return astwalk.WalkerForExpr(&badCallChecker{ctx: ctx}), nil
2222
})
2323
}
2424

checkers/badCond_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ for i := 0; i < n; i++ {
2929
xs[i] = 0
3030
}`
3131

32-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
33-
return astwalk.WalkerForFuncDecl(&badCondChecker{ctx: ctx})
32+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
33+
return astwalk.WalkerForFuncDecl(&badCondChecker{ctx: ctx}), nil
3434
})
3535
}
3636

checkers/badLock_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ mu.Unlock()`
2020
mu.Lock()
2121
defer mu.Unlock()`
2222

23-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24-
return astwalk.WalkerForStmtList(&badLockChecker{ctx: ctx})
23+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
24+
return astwalk.WalkerForStmtList(&badLockChecker{ctx: ctx}), nil
2525
})
2626
}
2727

checkers/badRegexp_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ func init() {
2121
info.Before = "regexp.MustCompile(`(?:^aa|bb|cc)foo[aba]`)"
2222
info.After = "regexp.MustCompile(`^(?:aa|bb|cc)foo[ab]`)"
2323

24-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2525
opts := &syntax.ParserOptions{}
2626
c := &badRegexpChecker{
2727
ctx: ctx,
2828
parser: syntax.NewParser(opts),
2929
}
30-
return astwalk.WalkerForExpr(c)
30+
return astwalk.WalkerForExpr(c), nil
3131
})
3232
}
3333

checkers/boolExprSimplify_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ b := !(x) == !(y)`
2929
a := elapsed < expectElapsedMin
3030
b := (x) == (y)`
3131

32-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
33-
return astwalk.WalkerForExpr(&boolExprSimplifyChecker{ctx: ctx})
32+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
33+
return astwalk.WalkerForExpr(&boolExprSimplifyChecker{ctx: ctx}), nil
3434
})
3535
}
3636

checkers/builtinShadowDecl_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ func init() {
1515
info.Before = `type int struct {}`
1616
info.After = `type myInt struct {}`
1717

18-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
19-
return &builtinShadowDeclChecker{ctx: ctx}
18+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
19+
return &builtinShadowDeclChecker{ctx: ctx}, nil
2020
})
2121
}
2222

checkers/builtinShadow_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ func init() {
1515
info.Before = `len := 10`
1616
info.After = `length := 10`
1717

18-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
19-
return astwalk.WalkerForLocalDef(&builtinShadowChecker{ctx: ctx}, ctx.TypesInfo)
18+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
19+
return astwalk.WalkerForLocalDef(&builtinShadowChecker{ctx: ctx}, ctx.TypesInfo), nil
2020
})
2121
}
2222

checkers/captLocal_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ func init() {
2121
info.Before = `func f(IN int, OUT *int) (ERR error) {}`
2222
info.After = `func f(in int, out *int) (err error) {}`
2323

24-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2525
c := &captLocalChecker{ctx: ctx}
2626
c.paramsOnly = info.Params.Bool("paramsOnly")
27-
return astwalk.WalkerForLocalDef(c, ctx.TypesInfo)
27+
return astwalk.WalkerForLocalDef(c, ctx.TypesInfo), nil
2828
})
2929
}
3030

checkers/caseOrder_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ case ast.Expr:
2828
fmt.Println("expr")
2929
}`
3030

31-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
32-
return astwalk.WalkerForStmt(&caseOrderChecker{ctx: ctx})
31+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
32+
return astwalk.WalkerForStmt(&caseOrderChecker{ctx: ctx}), nil
3333
})
3434
}
3535

checkers/codegenComment_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func init() {
1717
info.Before = `// This file was automatically generated by foogen`
1818
info.After = `// Code generated by foogen. DO NOT EDIT.`
1919

20-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
20+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2121
patterns := []string{
2222
"this (?:file|code) (?:was|is) auto(?:matically)? generated",
2323
"this (?:file|code) (?:was|is) generated automatically",
@@ -32,7 +32,7 @@ func init() {
3232
return &codegenCommentChecker{
3333
ctx: ctx,
3434
badCommentRE: re,
35-
}
35+
}, nil
3636
})
3737
}
3838

checkers/commentFormatting_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func init() {
1919
info.Before = `//This is a comment`
2020
info.After = `// This is a comment`
2121

22-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
22+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2323
parts := []string{
2424
`^//go:generate .*$`, // e.g.: go:generate value
2525
`^//\w+:.*$`, // e.g.: key: value
@@ -32,7 +32,7 @@ func init() {
3232
return astwalk.WalkerForComment(&commentFormattingChecker{
3333
ctx: ctx,
3434
pragmaRE: pragmaRE,
35-
})
35+
}), nil
3636
})
3737
}
3838

checkers/commentedOutCode_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ func init() {
2222
foo(1, 2)`
2323
info.After = `foo(1, 2)`
2424

25-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
25+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2626
return astwalk.WalkerForLocalComment(&commentedOutCodeChecker{
2727
ctx: ctx,
2828
notQuiteFuncCall: regexp.MustCompile(`\w+\s+\([^)]*\)\s*$`),
29-
})
29+
}), nil
3030
})
3131
}
3232

checkers/commentedOutImport_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ import (
2424
"fmt"
2525
)`
2626

27-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
27+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2828
const pattern = `(?m)^(?://|/\*)?\s*"([a-zA-Z0-9_/]+)"\s*(?:\*/)?$`
2929
return &commentedOutImportChecker{
3030
ctx: ctx,
3131
importStringRE: regexp.MustCompile(pattern),
32-
}
32+
}, nil
3333
})
3434
}
3535

checkers/defaultCaseOrder_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ default: // <- last case (could also be the first one)
3131
// ...
3232
}`
3333

34-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
35-
return astwalk.WalkerForStmt(&defaultCaseOrderChecker{ctx: ctx})
34+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
35+
return astwalk.WalkerForStmt(&defaultCaseOrderChecker{ctx: ctx}), nil
3636
})
3737
}
3838

checkers/deferUnlambda_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ func init() {
1717
info.Before = `defer func() { f() }()`
1818
info.After = `f()`
1919

20-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
21-
return astwalk.WalkerForStmt(&deferUnlambdaChecker{ctx: ctx})
20+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
21+
return astwalk.WalkerForStmt(&deferUnlambdaChecker{ctx: ctx}), nil
2222
})
2323
}
2424

checkers/deprecatedComment_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func FuncOld() int`
2121
// Deprecated: use FuncNew instead
2222
func FuncOld() int`
2323

24-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2525
c := &deprecatedCommentChecker{ctx: ctx}
2626

2727
c.commonPatterns = []*regexp.Regexp{
@@ -55,7 +55,7 @@ func FuncOld() int`
5555
c.commonTypos[i] = strings.ToUpper(c.commonTypos[i])
5656
}
5757

58-
return astwalk.WalkerForDocComment(c)
58+
return astwalk.WalkerForDocComment(c), nil
5959
})
6060
}
6161

checkers/docStub_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ func Foo() {}
2626
// Foo is a demonstration-only function.
2727
func Foo() {}`
2828

29-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
29+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
3030
re := `(?i)^\.\.\.$|^\.$|^xxx\.?$|^whatever\.?$`
3131
c := &docStubChecker{
3232
ctx: ctx,
3333
stubCommentRE: regexp.MustCompile(re),
3434
}
35-
return c
35+
return c, nil
3636
})
3737
}
3838

checkers/dupArg_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ func init() {
1818
info.Before = `copy(dst, dst)`
1919
info.After = `copy(dst, src)`
2020

21-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
21+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2222
c := &dupArgChecker{ctx: ctx}
2323
// newMatcherFunc returns a function that matches a call if
2424
// args[xIndex] and args[yIndex] are equal.
@@ -95,7 +95,7 @@ func init() {
9595

9696
// TODO(quasilyte): more of these.
9797
}
98-
return astwalk.WalkerForExpr(c)
98+
return astwalk.WalkerForExpr(c), nil
9999
})
100100
}
101101

checkers/dupBranchBody_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ if cond {
2626
println("cond=false")
2727
}`
2828

29-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
30-
return astwalk.WalkerForStmt(&dupBranchBodyChecker{ctx: ctx})
29+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
30+
return astwalk.WalkerForStmt(&dupBranchBodyChecker{ctx: ctx}), nil
3131
})
3232
}
3333

checkers/dupCase_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ switch x {
2222
case ys[0], ys[1], ys[2], ys[3], ys[4]:
2323
}`
2424

25-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
26-
return astwalk.WalkerForStmt(&dupCaseChecker{ctx: ctx})
25+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
26+
return astwalk.WalkerForStmt(&dupCaseChecker{ctx: ctx}), nil
2727
})
2828
}
2929

checkers/dupImports_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import(
2222
"fmt"
2323
)`
2424

25-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
26-
return &dupImportChecker{ctx: ctx}
25+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
26+
return &dupImportChecker{ctx: ctx}, nil
2727
})
2828
}
2929

checkers/dupSubExpr_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ sort.Slice(xs, func(i, j int) bool {
2525
return xs[i].v < xs[j].v
2626
})`
2727

28-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
28+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
2929
c := &dupSubExprChecker{ctx: ctx}
3030

3131
ops := []struct {
@@ -59,7 +59,7 @@ sort.Slice(xs, func(i, j int) bool {
5959
}
6060
}
6161

62-
return astwalk.WalkerForExpr(c)
62+
return astwalk.WalkerForExpr(c), nil
6363
})
6464
}
6565

checkers/elseif_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ if cond1 {
3030
} else if x := cond2; x {
3131
}`
3232

33-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
33+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
3434
c := &elseifChecker{ctx: ctx}
3535
c.skipBalanced = info.Params.Bool("skipBalanced")
36-
return astwalk.WalkerForStmt(c)
36+
return astwalk.WalkerForStmt(c), nil
3737
})
3838
}
3939

checkers/emptyFallthrough_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ case reflect.Int, reflect.Int32:
2424
return Int
2525
}`
2626

27-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
28-
return astwalk.WalkerForStmt(&emptyFallthroughChecker{ctx: ctx})
27+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
28+
return astwalk.WalkerForStmt(&emptyFallthroughChecker{ctx: ctx}), nil
2929
})
3030
}
3131

checkers/emptyStringTest_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ func init() {
2020
info.After = `s == ""`
2121
info.Note = "See https://dmitri.shuralyov.com/idiomatic-go#empty-string-check."
2222

23-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
24-
return astwalk.WalkerForExpr(&emptyStringTestChecker{ctx: ctx})
23+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
24+
return astwalk.WalkerForExpr(&emptyStringTestChecker{ctx: ctx}), nil
2525
})
2626
}
2727

checkers/equalFold_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ func init() {
1818
info.Before = `strings.ToLower(x) == strings.ToLower(y)`
1919
info.After = `strings.EqualFold(x, y)`
2020

21-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
22-
return astwalk.WalkerForExpr(&equalFoldChecker{ctx: ctx})
21+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
22+
return astwalk.WalkerForExpr(&equalFoldChecker{ctx: ctx}), nil
2323
})
2424
}
2525

checkers/evalOrder_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ err := f(&x)
2424
return x, err
2525
`
2626

27-
collection.AddChecker(&info, func(ctx *linter.CheckerContext) linter.FileWalker {
28-
return astwalk.WalkerForStmt(&evalOrderChecker{ctx: ctx})
27+
collection.AddChecker(&info, func(ctx *linter.CheckerContext) (linter.FileWalker, error) {
28+
return astwalk.WalkerForStmt(&evalOrderChecker{ctx: ctx}), nil
2929
})
3030
}
3131

0 commit comments

Comments
 (0)