diff options
author | Teddy Wing | 2023-05-25 20:30:38 +0200 |
---|---|---|
committer | Teddy Wing | 2023-05-25 20:30:38 +0200 |
commit | c7ea2c3d8fd7d4536f04d060cc57307d15a340df (patch) | |
tree | 89898dc9d102c3a29ffe9c7a4640becd22b7766b | |
parent | 30edda9d8d1b543976b8c75c86f8504496e6c5b3 (diff) | |
download | godefererr-c7ea2c3d8fd7d4536f04d060cc57307d15a340df.tar.bz2 |
Add identifier documentation comments
-rw-r--r-- | defererr.go | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/defererr.go b/defererr.go index 4ff0802..c6e00fe 100644 --- a/defererr.go +++ b/defererr.go @@ -28,17 +28,25 @@ func run(pass *analysis.Pass) (interface{}, error) { return nil, nil } +// functionState stores information about functions needed to report problems +// returning errors from defer. type functionState struct { + // The end position of the first defer closure. firstErrorDeferEndPos token.Pos + + // Error variable assigned in defer. deferErrorVar *ast.Ident } +// newFunctionState initialises a new functionState. func newFunctionState() functionState { return functionState{ firstErrorDeferEndPos: -1, } } +// setFirstErrorDeferEndPos sets the firstErrorDeferEndPos field of s to pos +// unless it has already been set. func (s *functionState) setFirstErrorDeferEndPos(pos token.Pos) { if s.firstErrorDeferEndPos != -1 { return @@ -47,10 +55,12 @@ func (s *functionState) setFirstErrorDeferEndPos(pos token.Pos) { s.firstErrorDeferEndPos = pos } +// deferAssignsError returns true if the deferErrorVar field of s was assigned. func (s *functionState) deferAssignsError() bool { return s.deferErrorVar != nil } +// checkFunctions looks at each function and runs defer error checks. func checkFunctions(pass *analysis.Pass, node ast.Node) { ast.Inspect( node, @@ -124,7 +134,8 @@ func checkFunctions(pass *analysis.Pass, node ast.Node) { ) } -// TODO: doc +// checkFunctionBody looks for defer statements in a function body and runs +// error checks. func checkFunctionBody( pass *analysis.Pass, funcBody *ast.BlockStmt, @@ -152,7 +163,8 @@ func checkFunctionBody( ) } -// TODO: doc +// checkFunctionReturns checks whether the return statements after a defer +// closure use the error assigned in the defer. func checkFunctionReturns( pass *analysis.Pass, funcBody *ast.BlockStmt, @@ -206,7 +218,8 @@ func checkFunctionReturns( ) } -// TODO: doc +// checkErrorAssignedInDefer checks whether an error value is assigned to a +// captured variable in a defer closure. func checkErrorAssignedInDefer( pass *analysis.Pass, deferFuncLit *ast.FuncLit, @@ -315,7 +328,8 @@ func checkErrorAssignedInDefer( ) } -// TODO: doc +// isVariableDeclaredInsideDeferClosure returns true if the position of +// variableDecl is between the start and end of deferFuncLit. func isVariableDeclaredInsideDeferClosure( deferFuncLit *ast.FuncLit, variableDecl ast.Node, |