Skip to content

Commit 1682dfb

Browse files
committed
feat: add defer linter
1 parent ca40633 commit 1682dfb

File tree

3 files changed

+27
-19
lines changed

3 files changed

+27
-19
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/Antonboom/nilnil v0.1.1
1010
github.com/BurntSushi/toml v1.2.0
1111
github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24
12-
github.com/GaijinEntertainment/go-defer v1.2.0
12+
github.com/GaijinEntertainment/go-defer v1.3.0
1313
github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0
1414
github.com/OpenPeeDeeP/depguard v1.1.1
1515
github.com/alexkohler/prealloc v1.0.0

go.sum

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/testdata/defer.go

+24-16
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,48 @@
11
//golangcitest:args -Edefer
22
package testdata
33

4-
func funcReturnsInt() int {
5-
return 1
4+
import (
5+
"errors"
6+
)
7+
8+
func funcNotReturnAnyType() {
9+
}
10+
11+
func funcReturnErr() error {
12+
return errors.New("some error")
613
}
714

8-
func funcReturnsFunc() func() {
15+
func funcReturnFuncAndErr() (func(), error) {
916
return func() {
10-
}
17+
}, nil
1118
}
1219

13-
func funcReturnsErrAndFunc() (error, func()) {
14-
return nil, func() {
15-
}
20+
func funcDeferNotReturnAnyType1() {
21+
defer funcNotReturnAnyType()
1622
}
1723

18-
func funcDeferReturnGoodValue() {
19-
defer funcReturnsInt()
24+
func funcDeferNotReturnAnyType2() {
25+
defer func() {
26+
_ = funcReturnErr()
27+
}()
2028
}
2129

22-
func funcDeferReturnFunc() {
23-
defer funcReturnsFunc() // want "deferred call should not return a function"
30+
func funcDeferReturnErr() {
31+
defer funcReturnErr() // want "deferred call should not return anything"
2432
}
2533

2634
func funcDeferReturnErrAndFunc() {
27-
defer funcReturnsErrAndFunc() // want "deferred call should not return a function"
35+
defer funcReturnFuncAndErr() // want "deferred call should not return anything"
2836
}
2937

3038
func funcDeferAnonymousReturnFunc() {
31-
defer func() func() { // want "deferred call should not return a function"
39+
defer func() func() { // want "deferred call should not return anything"
3240
return func() {}
3341
}()
3442
}
3543

36-
func funcDeferAnonymousReturnErrAndFunc() {
37-
defer func() (error, func()) { // want "deferred call should not return a function"
38-
return nil, func() {}
44+
func funcDeferAnonymousReturnIntAndErr() {
45+
defer func() (int, error) { // want "deferred call should not return anything"
46+
return 1, nil
3947
}()
4048
}

0 commit comments

Comments
 (0)