anonymousfunc

package
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 24, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package anonymousfunc implements a sub-analyzer to analyze anonymous functions in a package.

Index

Constants

This section is empty.

Variables

View Source
var Analyzer = &analysis.Analyzer{
	Name:       "nilaway_anonymous_func_analyzer",
	Doc:        _doc,
	Run:        analysishelper.WrapRun(run),
	ResultType: reflect.TypeOf((*analysishelper.Result[map[*ast.FuncLit]*FuncLitInfo])(nil)),
	Requires:   []*analysis.Analyzer{config.Analyzer},
}

Analyzer collects a set of variables from closure for each function literal

Functions

This section is empty.

Types

type FuncLitInfo

type FuncLitInfo struct {
	// FakeFuncDecl is the fake func decl node created for the func lit node so that it can be
	// treated like a regular function declaration during the analysis. The parameter list is
	// extended to include variables used from the closure.
	FakeFuncDecl *ast.FuncDecl
	// FakeFuncObj is the fake object for the fake func decl node.
	FakeFuncObj *types.Func
	// ClosureVars stores a slice of assigned / accessed variables from closure within each
	// function literal in the order of their appearances.
	ClosureVars []*VarInfo
}

FuncLitInfo is the struct that stores auxiliary information (e.g., the closure variables it uses, its corresponding fake func decl node, etc.) about a func lit that is useful in the main analysis.

type VarInfo

type VarInfo struct {
	// Ident stores the ident node.
	Ident *ast.Ident
	// Obj stores the named entity of the variable.
	Obj *types.Var
}

VarInfo keeps the information about a variable (*ast.Ident) and its associated object type (*types.Var). It can either be a real identifier we collected from the analysis, or a fake one we created to aid the analysis.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL