diff options
| author | Teddy Wing | 2023-05-26 20:09:36 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2023-05-26 20:09:36 +0200 | 
| commit | 7e7367c145b9ac3740ee51bc8cf509948138aa8b (patch) | |
| tree | b7156c16b0791988545fbf35afa8c9d17e7f3174 | |
| parent | ec52bd27685fef75ffe76333989760f3cf551743 (diff) | |
| download | godefererr-7e7367c145b9ac3740ee51bc8cf509948138aa8b.tar.bz2 | |
Add package documentation
Tried the sample code and it looks like the `return err` is not
necessary. The `err` set in `defer` does work find even when using
`return nil`. Oh well, we can adjust that check later if needed.
| -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 ( | 
