blob: 920fa9ea586d907f0d4b8c2dd6f15e690a7374f9 [file] [log] [blame]
// Test of redundant if err != nil
// Package pkg ...
package pkg
func f() error {
if err := f(); err != nil {
g()
return err
}
return nil
}
func g() error {
if err := f(); err != nil { // MATCH /redundant/
return err
}
return nil
}
func h() error {
if err, x := f(), 1; err != nil {
return err
}
return nil
}
func i() error {
a := 1
if err := f(); err != nil {
a++
return err
}
return nil
}
func j() error {
var a error
if err := f(); err != nil {
return err
}
return a
}
func k() error {
if err := f(); err != nil {
// TODO: handle error better
return err
}
return nil
}
func l() (interface{}, error) {
if err := f(); err != nil {
return nil, err
}
if err := f(); err != nil {
return nil, err
}
if err := f(); err != nil {
return nil, err
}
// Phew, it worked
return nil
}
func m() error {
if err := f(); err != nil {
return err
}
if err := f(); err != nil {
return err
}
if err := f(); err != nil {
return err
}
// Phew, it worked again.
return nil
}
func multi() error {
a := 0
var err error
// unreachable code after return statements is intentional to check that it
// doesn't confuse the linter.
if true {
a++
if err := f(); err != nil { // MATCH /redundant/
return err
}
return nil
a++
} else {
a++
if err = f(); err != nil { // MATCH /redundant/
return err
}
return nil
a++
}
}