Documentation
¶
Overview ¶
Package ctrlflow is an analysis that provides a syntactic control-flow graph (CFG) for the body of a function. It records whether a function cannot return. By itself, it does not report any diagnostics.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Analyzer = &analysis.Analyzer{ Name: "ctrlflow", Doc: "build a control-flow graph", URL: "https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/ctrlflow", Run: run, ResultType: reflect.TypeFor[*CFGs](), FactTypes: []analysis.Fact{new(noReturn)}, Requires: []*analysis.Analyzer{inspect.Analyzer}, }
Functions ¶
This section is empty.
Types ¶
type CFGs ¶
type CFGs struct {
// contains filtered or unexported fields
}
A CFGs holds the control-flow graphs for all the functions of the current package.
func (*CFGs) FuncDecl ¶
FuncDecl returns the control-flow graph for a named function. It returns nil if decl.Body==nil.
func (*CFGs) NoReturn ¶ added in v0.41.0
NoReturn reports whether the specified control-flow graph cannot return normally.
It is defined for at least all function symbols that appear as the static callee of a CallExpr in the current package, even if the callee was imported from a dependency.
The result may incorporate interprocedural information based on induction of the "no return" property over the static call graph within the package. For example, if f simply calls g and g always calls os.Exit, then both f and g may be deemed never to return.