| Age | Commit message (Collapse) | Author | 
 | 
Don't pass yet as we currently only suggest `(errorVar error)` as the
return signature.
 | 
 | 
* Remove debug prints.
* Reorganise the code so that similar things are together.
* Add comments describing the logic.
 | 
 | 
I had previously hard-coded the variable name "err" as the recommended
name declaration in the function signature for simplicity.
Now, use the name assigned in the `defer` instead, which is more
correct.
 | 
 | 
Based on the code from 'gocapturedrefrace'.
 | 
 | 
This reports diagnostics when using `return nil` instead of `return err`
when `err` is an error variable assigned in the first `defer` closure.
 | 
 | 
 | 
 | 
Ensure the name of the returned error variable matches the name of the
error variable assigned in the `defer` statement.
 | 
 | 
Want to check that the `return` statement uses the same variable used in
the `defer` closure. Start inspecting the values to figure out how we
can narrow that down.
Add a test case for a "good" assignment of a returned error in `defer`.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Since `ident.Obj.Decl` is a `*ast.ValueSpec` in
`shouldDeclareErrInSignature` but a `*ast.Field` in
`doesDeclareErrInSignature`, we need to handle both declaration types.
Turn the value into an `ast.Node`, which covers both, and use that to
determine whether the variable is declared in the closure.
 | 
 | 
We were looking for a `*ast.ValueSpec`, but it looks like when `err` is
declared in the function signature, the type is `*ast.Field`.
 | 
 | 
Show me which function the debug print statements belong to.
 | 
 | 
The idea is to store the end position of the first defer closure that
assigns an error variable from the outer scope. Then, we can check the
`return` statements in the rest of the function after that position to
ensure they use the error variable.
 | 
 | 
Clarify intended contents.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Give the check a name.
 | 
 | 
We don't want to report error variables that were declared inside the
closure, as those don't depend on the outside scope.
 | 
 | 
 | 
 | 
Give it a name.
 | 
 | 
Trying to make this easier to read.
 | 
 | 
 | 
 | 
While looking at the assignments in the `defer`, if we encounter an
`error`-type assignment, emit a diagnostic if the error named in the lhs
of the assignment is not present in the return signature's names.
Not sure if this makes sense to me yet. I probably only want to report a
problem for a non-declare assignment of an error value when the error
type in the return signature is _not_ named at all.
 | 
 | 
Store the index where we find the `error` type in the function
signature's return list so we can use it later to get the corresponding
variable names, if any.
 | 
 | 
And add a test function that does have named returned values.
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
I didn't read the docs carefully, it turns out `FuncType` only gives us
the signature. If we want access to the function body as well to be able
to walk its AST, we need a `FuncDecl`.
 | 
 | 
I was having a hard time figuring out how to get the function where a
`defer` occurs from the defer, so I decided to look at all functions
first instead, and find out if they contain `defer`s.
 | 
 | 
Still working out how to traverse the AST to be able to see the objects
I need.
 | 
 | 
Idea for a new linter for ensuring errors are returned from `defer`
closures.
 |