Documentation ¶
Overview ¶
Package analysisinternal exposes internal-only fields from go/analysis.
Index ¶
- Variables
- func FindBestMatch(pattern string, idents []*ast.Ident) ast.Expr
- func FindMatchingIdents(typs []types.Type, node ast.Node, pos token.Pos, info *types.Info, ...) map[types.Type][]*ast.Ident
- func IsZeroValue(expr ast.Expr) bool
- func StmtToInsertVarBefore(path []ast.Node) ast.Stmt
- func TypeErrorEndPos(fset *token.FileSet, src []byte, start token.Pos) token.Pos
- func TypeExpr(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.Type) ast.Expr
- func WalkASTWithParent(n ast.Node, f func(n ast.Node, parent ast.Node) bool)
- func ZeroValue(fset *token.FileSet, f *ast.File, pkg *types.Package, typ types.Type) ast.Expr
- type TypeErrorPass
Constants ¶
This section is empty.
Variables ¶
var ( GetTypeErrors func(p interface{}) []types.Error SetTypeErrors func(p interface{}, errors []types.Error) )
Functions ¶
func FindBestMatch ¶
FindBestMatch employs fuzzy matching to evaluate the similarity of each given identifier to the given pattern. We return the identifier whose name is most similar to the pattern.
func FindMatchingIdents ¶
func FindMatchingIdents(typs []types.Type, node ast.Node, pos token.Pos, info *types.Info, pkg *types.Package) map[types.Type][]*ast.Ident
FindMatchingIdents finds all identifiers in 'node' that match any of the given types. 'pos' represents the position at which the identifiers may be inserted. 'pos' must be within the scope of each of identifier we select. Otherwise, we will insert a variable at 'pos' that is unrecognized.
func IsZeroValue ¶
IsZeroValue checks whether the given expression is a 'zero value' (as determined by output of analysisinternal.ZeroValue)
func StmtToInsertVarBefore ¶
StmtToInsertVarBefore returns the ast.Stmt before which we can safely insert a new variable. Some examples:
Basic Example: z := 1 y := z + x If x is undeclared, then this function would return `y := z + x`, so that we can insert `x := ` on the line before `y := z + x`.
If stmt example: if z == 1 { } else if z == y {} If y is undeclared, then this function would return `if z == 1 {`, because we cannot insert a statement between an if and an else if statement. As a result, we need to find the top of the if chain to insert `y := ` before.
func TypeErrorEndPos ¶
func WalkASTWithParent ¶
WalkASTWithParent walks the AST rooted at n. The semantics are similar to ast.Inspect except it does not call f(nil).
Types ¶
type TypeErrorPass ¶
type TypeErrorPass string
const ( NoNewVars TypeErrorPass = "nonewvars" NoResultValues TypeErrorPass = "noresultvalues" UndeclaredName TypeErrorPass = "undeclaredname" )