diff options
author | Teddy Wing | 2023-05-19 02:43:40 +0200 |
---|---|---|
committer | Teddy Wing | 2023-05-19 02:43:40 +0200 |
commit | 6c4e3d66fa88ce4bfea8fec799c97ec53f4f9b21 (patch) | |
tree | eb7be3c1d62b9d6827ced6f233e98d9feed1093a | |
parent | 0224fc93a90adcd061679380fa85bef6311a259b (diff) | |
download | godefererr-6c4e3d66fa88ce4bfea8fec799c97ec53f4f9b21.tar.bz2 |
Check for error types in assignments in `defer`
-rw-r--r-- | defererr.go | 11 |
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 }, ) |