1
0
mirror of https://github.com/mgechev/revive.git synced 2025-11-23 22:04:49 +02:00

Capture yet more bad defer / recover patterns (#719)

* Yet more bad defer / recover patterns

`recover()` is an eternal font of excitement.

* demonstrating another flavor of failure

* removing leftover code

* update documentation

* removes test not related to the rule itself

Co-authored-by: chavacava <salvadorcavadini+github@gmail.com>
This commit is contained in:
Steven L
2022-07-24 00:34:16 -07:00
committed by GitHub
parent 0f4df1ca40
commit db56db0b6a
3 changed files with 37 additions and 9 deletions

13
testdata/defer.go vendored
View File

@@ -17,12 +17,19 @@ func deferrer() {
defer tt.m() // MATCH /be careful when deferring calls to methods without pointer receiver/
defer func() error {
return errors.New("error") //MATCH /return in a defer function has no effect/
return errors.New("error") // MATCH /return in a defer function has no effect/
}()
defer recover()
defer recover() // MATCH /recover must be called inside a deferred function, this is executing recover immediately/
recover() //MATCH /recover must be called inside a deferred function/
recover() // MATCH /recover must be called inside a deferred function/
defer deferrer()
helper := func(_ interface{}) {}
defer helper(recover()) // MATCH /recover must be called inside a deferred function, this is executing recover immediately/
// does not work, but not currently blocked.
defer helper(func() { recover() })
}