aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--defererr.go27
1 files changed, 26 insertions, 1 deletions
diff --git a/defererr.go b/defererr.go
index ae5f688..6bd1188 100644
--- a/defererr.go
+++ b/defererr.go
@@ -4,6 +4,7 @@ package defererr
import (
"fmt"
"go/ast"
+ "go/token"
"golang.org/x/tools/go/analysis"
)
@@ -39,7 +40,7 @@ func run(pass *analysis.Pass) (interface{}, error) {
returnIdent, ok := returnVal.Type.(*ast.Ident)
if !ok {
- return true
+ return true
}
if returnIdent.Name == "error" {
@@ -68,6 +69,30 @@ func run(pass *analysis.Pass) (interface{}, error) {
// TODO: Find out if defer uses assigns an error variable without declaring it
+ funcLit, ok := deferStmt.Call.Fun.(*ast.FuncLit)
+ if !ok {
+ return true
+ }
+
+ ast.Inspect(
+ funcLit.Body,
+ func(node ast.Node) bool {
+ assignStmt, ok := node.(*ast.AssignStmt)
+ if !ok {
+ return true
+ }
+
+ if assignStmt.Tok == token.DEFINE {
+ return true
+ }
+
+ fmt.Printf("assignStmt: %#v\n", assignStmt)
+ fmt.Printf("token: %d\n", token.DEFINE)
+
+ return true
+ },
+ )
+
return true
},
)