aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--defererr.go37
-rw-r--r--testdata/signature.go2
2 files changed, 38 insertions, 1 deletions
diff --git a/defererr.go b/defererr.go
index 338f2c1..8d1cb51 100644
--- a/defererr.go
+++ b/defererr.go
@@ -62,6 +62,7 @@ func run(pass *analysis.Pass) (interface{}, error) {
if len(funcDecl.Type.Results.List[errorReturnIndex].Names) > 0 {
fmt.Printf("return error var name: %#v\n", funcDecl.Type.Results.List[errorReturnIndex].Names[0])
}
+ errorReturnField := funcDecl.Type.Results.List[errorReturnIndex]
ast.Inspect(
funcDecl.Body,
@@ -133,6 +134,25 @@ func run(pass *analysis.Pass) (interface{}, error) {
if named.Obj().Name() == "error" {
deferAssignsError = true
+
+ isErrorNameInReturnSignature := false
+
+ for _, errorReturnIdent := range errorReturnField.Names {
+ if ident.Name == errorReturnIdent.Name {
+ // Report if no matches
+ isErrorNameInReturnSignature = true
+ }
+ }
+
+ if !isErrorNameInReturnSignature {
+ pass.Reportf(
+ errorReturnField.Pos(),
+ "return signature should be '(err error)'", // TODO: Use name from ident.Name
+ // errorReturnField,
+ )
+
+ break
+ }
}
}
@@ -142,6 +162,23 @@ func run(pass *analysis.Pass) (interface{}, error) {
// TODO: Check that funcDecl declares error in signature (check before ast.Inspect on function body, report here)
+ // isErrorNameInReturnSignature := false
+ //
+ // for _, errorReturnIdent := range errorReturnField.Names {
+ // if ident.Name == errorReturnIdent.Name {
+ // // Report if no matches
+ // isErrorNameInReturnSignature = true
+ // }
+ // }
+ //
+ // if !isErrorNameInReturnSignature {
+ // pass.Reportf(
+ // errorReturnField.Pos(),
+ // "return signature should be '(err error)' (TODO)",
+ // errorReturnField,
+ // )
+ // }
+
return true
},
)
diff --git a/testdata/signature.go b/testdata/signature.go
index 6fc15fc..d780240 100644
--- a/testdata/signature.go
+++ b/testdata/signature.go
@@ -2,7 +2,7 @@ package main
import "errors"
-func shouldDeclareErrInSignature() error { // want "return signature should be '(err error)'"
+func shouldDeclareErrInSignature() error { // want "return signature should be '\\(err error\\)'"
var err error // Should use variable declared in signature
err = nil