Skip to content

Commit 6dafa09

Browse files
ehsundarpolyfloyd
authored andcommitted
fix: allow %T verb to not be wrapped
- closes #81
1 parent b458386 commit 6dafa09

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

errorlint/lint.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func LintFmtErrorfCalls(fset *token.FileSet, info types.Info, multipleWraps bool
8282
argIndex++
8383
}
8484

85-
if verb.format == "w" {
85+
if verb.format == "w" || verb.format == "T" {
8686
continue
8787
}
8888
if argIndex-1 >= len(args) {

errorlint/testdata/src/fmterrorf/fmterrorf.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ func NonWrappingVerb() error {
1515
return fmt.Errorf("error: %v", err) // want "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
1616
}
1717

18+
func NonWrappingTVerb() error {
19+
err := errors.New("oops")
20+
return fmt.Errorf("error: %T", err)
21+
}
22+
1823
func DoubleNonWrappingVerb() error {
1924
err := errors.New("oops")
2025
return fmt.Errorf("%v %v", err, err) // want "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
@@ -27,6 +32,13 @@ func ErrorOneWrap() error {
2732
return fmt.Errorf("%v, %w, %v", err1, err2, err3) // want "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
2833
}
2934

35+
func ValidNonWrappingTVerb() error {
36+
err1 := errors.New("oops1")
37+
err2 := errors.New("oops2")
38+
err3 := errors.New("oops3")
39+
return fmt.Errorf("%w, %T, %w", err1, err2, err3)
40+
}
41+
3042
func ErrorMultipleWraps() error {
3143
err1 := errors.New("oops1")
3244
err2 := errors.New("oops2")

errorlint/testdata/src/fmterrorf/fmterrorf.go.golden

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ func NonWrappingVerb() error {
1515
return fmt.Errorf("error: %w", err) // want "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
1616
}
1717

18+
func NonWrappingTVerb() error {
19+
err := errors.New("oops")
20+
return fmt.Errorf("error: %T", err)
21+
}
22+
1823
func DoubleNonWrappingVerb() error {
1924
err := errors.New("oops")
2025
return fmt.Errorf("%w %w", err, err) // want "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
@@ -27,6 +32,13 @@ func ErrorOneWrap() error {
2732
return fmt.Errorf("%w, %w, %w", err1, err2, err3) // want "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
2833
}
2934

35+
func ValidNonWrappingTVerb() error {
36+
err1 := errors.New("oops1")
37+
err2 := errors.New("oops2")
38+
err3 := errors.New("oops3")
39+
return fmt.Errorf("%w, %T, %w", err1, err2, err3)
40+
}
41+
3042
func ErrorMultipleWraps() error {
3143
err1 := errors.New("oops1")
3244
err2 := errors.New("oops2")

0 commit comments

Comments
 (0)