diff options
| -rw-r--r-- | defererr.go | 28 | 
1 files changed, 27 insertions, 1 deletions
| diff --git a/defererr.go b/defererr.go index efd6e55..e1e3182 100644 --- a/defererr.go +++ b/defererr.go @@ -1,4 +1,30 @@ -// TODO: doc +// Package defererr defines an Analyzer that checks whether an error set in a +// defer closure is correctly returned. +// +// # Analyzer defererr +// +// defererr: report incorrectly returned errors from defer closures. +// +// Errors can be returned from a defer closure by setting a captured error +// variable within the closure. In order for this to work, the error variable +// must be declared in the function signature, and must be returned somewhere +// in the function. This analyzer checks to make sure that captured error +// variables assigned in defer closures are correctly declared and returned. +// +// For example: +// +//	func returnErrorFromDefer() error { // return signature should be '(err error)' +//		var err error = nil +//		if err != nil { +//			return err +//		} +// +//		defer func() { +//			err = errors.New("defer error") +//		}() +// +//		return nil // return should use 'err' +//	}  package defererr  import ( | 
