diff options
author | Teddy Wing | 2023-05-20 20:44:54 +0200 |
---|---|---|
committer | Teddy Wing | 2023-05-20 20:44:54 +0200 |
commit | f6b3dd27e854ec96e1a29e6034ff1e22c2283719 (patch) | |
tree | fd3f5204e789647195d85de5476e45f16727b518 | |
parent | 6c4e3d66fa88ce4bfea8fec799c97ec53f4f9b21 (diff) | |
download | godefererr-f6b3dd27e854ec96e1a29e6034ff1e22c2283719.tar.bz2 |
Find function signature return value names
And add a test function that does have named returned values.
-rw-r--r-- | defererr.go | 9 | ||||
-rw-r--r-- | testdata/signature.go | 15 |
2 files changed, 22 insertions, 2 deletions
diff --git a/defererr.go b/defererr.go index 87697a3..c7816e9 100644 --- a/defererr.go +++ b/defererr.go @@ -37,7 +37,12 @@ func run(pass *analysis.Pass) (interface{}, error) { funcReturnsError := false for _, returnVal := range funcDecl.Type.Results.List { - fmt.Printf("returnVal: %#v\n", returnVal.Type) + fmt.Printf("returnVal: %#v\n", returnVal) + for _, ident := range returnVal.Names { + fmt.Printf("returnVal name: %#v\n", ident) + } + + fmt.Printf("returnVal Type: %#v\n", returnVal.Type) returnIdent, ok := returnVal.Type.(*ast.Ident) if !ok { @@ -167,6 +172,8 @@ func run(pass *analysis.Pass) (interface{}, error) { // fmt.Printf("returnVal: %#v\n", returnVal) // } + fmt.Println() + return true }, ) diff --git a/testdata/signature.go b/testdata/signature.go index 17cfd0b..6fc15fc 100644 --- a/testdata/signature.go +++ b/testdata/signature.go @@ -2,7 +2,7 @@ package main import "errors" -func declareErrInSignature() 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 @@ -16,3 +16,16 @@ func declareErrInSignature() error { // want "return signature should be '(err e return nil // want "does not return 'err'" } + +func doesDeclareErrInSignature() (err error) { + err = nil + if err != nil { + return err + } + + defer func() { + err = errors.New("defer error") + }() + + return nil // want "does not return 'err'" +} |