@@ -3,88 +3,29 @@ package testdata
33
44import (
55 "errors"
6+ "fmt"
67 "log"
78)
89
9- var errFoo = errors .New ("foo" )
10+ var errLintFoo = errors .New ("foo" )
1011
11- func doThing () error {
12- return errFoo
13- }
12+ type errLintBar struct {}
1413
15- func compare () {
16- err := doThing ()
17- if errors .Is (err , errFoo ) {
18- log .Println ("ErrFoo" )
19- }
20- if err == nil {
21- log .Println ("nil" )
22- }
23- if err != nil {
24- log .Println ("nil" )
25- }
26- if nil == err {
27- log .Println ("nil" )
28- }
29- if nil != err {
30- log .Println ("nil" )
31- }
32- if err == errFoo { // ERROR "comparing with == will fail on wrapped errors. Use errors.Is to check for a specific error"
33- log .Println ("errFoo" )
34- }
35- if err != errFoo { // ERROR "comparing with != will fail on wrapped errors. Use errors.Is to check for a specific error"
36- log .Println ("not errFoo" )
37- }
38- if errFoo == err { // ERROR "comparing with == will fail on wrapped errors. Use errors.Is to check for a specific error"
39- log .Println ("errFoo" )
40- }
41- if errFoo != err { // ERROR "comparing with != will fail on wrapped errors. Use errors.Is to check for a specific error"
42- log .Println ("not errFoo" )
43- }
44- switch err { // ERROR "switch on an error will fail on wrapped errors. Use errors.Is to check for specific errors"
45- case errFoo :
46- log .Println ("errFoo" )
47- }
48- switch doThing () { // ERROR "switch on an error will fail on wrapped errors. Use errors.Is to check for specific errors"
49- case errFoo :
50- log .Println ("errFoo" )
51- }
14+ func (* errLintBar ) Error () string {
15+ return "bar"
5216}
5317
54- type myError struct {}
55-
56- func ( * myError ) Error () string {
57- return "foo"
58- }
18+ func errorLintAll () {
19+ err := func () error { return nil }()
20+ if err == errLintFoo { // ERROR "comparing with == will fail on wrapped errors. Use errors.Is to check for a specific error"
21+ log . Println ( "errCompare" )
22+ }
5923
60- func doAnotherThing () error {
61- return & myError {}
62- }
24+ err = errors .New ("oops" )
25+ fmt .Errorf ("error: %v" , err ) // ERROR "non-wrapping format verb for fmt.Errorf. Use `%w` to format errors"
6326
64- func typeCheck () {
65- err := doAnotherThing ()
66- var me * myError
67- if errors .As (err , & me ) {
68- log .Println ("myError" )
69- }
70- _ , ok := err .(* myError ) // ERROR "type assertion on error will fail on wrapped errors. Use errors.As to check for specific errors"
71- if ok {
72- log .Println ("myError" )
73- }
7427 switch err .(type ) { // ERROR "type switch on error will fail on wrapped errors. Use errors.As to check for specific errors"
75- case * myError :
76- log .Println ("myError" )
77- }
78- switch doAnotherThing ().(type ) { // ERROR "type switch on error will fail on wrapped errors. Use errors.As to check for specific errors"
79- case * myError :
80- log .Println ("myError" )
81- }
82- switch t := err .(type ) { // ERROR "type switch on error will fail on wrapped errors. Use errors.As to check for specific errors"
83- case * myError :
84- log .Println ("myError" , t )
85- }
86- switch t := doAnotherThing ().(type ) { // ERROR "type switch on error will fail on wrapped errors. Use errors.As to check for specific errors"
87- case * myError :
88- log .Println ("myError" , t )
28+ case * errLintBar :
29+ log .Println ("errLintBar" )
8930 }
9031}
0 commit comments