aboutsummaryrefslogtreecommitdiffstats
path: root/defererr.go
diff options
context:
space:
mode:
authorTeddy Wing2023-05-19 02:43:40 +0200
committerTeddy Wing2023-05-19 02:43:40 +0200
commit6c4e3d66fa88ce4bfea8fec799c97ec53f4f9b21 (patch)
treeeb7be3c1d62b9d6827ced6f233e98d9feed1093a /defererr.go
parent0224fc93a90adcd061679380fa85bef6311a259b (diff)
downloadgodefererr-6c4e3d66fa88ce4bfea8fec799c97ec53f4f9b21.tar.bz2
Check for error types in assignments in `defer`
Diffstat (limited to 'defererr.go')
-rw-r--r--defererr.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/defererr.go b/defererr.go
index 31529b1..87697a3 100644
--- a/defererr.go
+++ b/defererr.go
@@ -92,6 +92,7 @@ func run(pass *analysis.Pass) (interface{}, error) {
// TODO: Get type of Lhs, check if "error"
// If "error", then ensure error return is declared in signature
+ deferAssignsError := false
for _, variable := range assignStmt.Lhs {
ident, ok := variable.(*ast.Ident)
if !ok {
@@ -123,8 +124,18 @@ func run(pass *analysis.Pass) (interface{}, error) {
fmt.Printf("type.type.obj: %#v\n", named.Obj())
fmt.Printf("type.type.obj: %#v\n", named.Obj().Name())
+
+ if named.Obj().Name() == "error" {
+ deferAssignsError = true
+ }
+ }
+
+ if !deferAssignsError {
+ return true
}
+ // TODO: Check that funcDecl declares error in signature (check before ast.Inspect on function body, report here)
+
return true
},
)