Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Application ¶ added in v1.3.0
type Application map[*est.Package]*Resolution
Application presents all resolved names throughout the Application
func (Application) PackageLevelRef ¶ added in v1.3.0
func (a Application) PackageLevelRef(inFile *est.File, node ast.Node) (pkgPath string, objName string, indexArguments []ast.Expr)
PackageLevelRef resolves the given ast.Node to a package path, object name and index arguments. In the case it fails to resolve, it will return ("", "", nil).
If the given node is a index or index list, then the index arguments will be extracted. These could either be type arguments, or map access arguments.
If the given node is: - an ident, then it is resolved to a package level deceleration in the same file as the ident. - a selector, then it is resolved to an exported ident from the selected package. - any other node will result in nothing being returned
Note:
- This function accounts for scoping and variable shadowing. (i.e. it will not mistake a variable "foo" in a function for the package imported as "foo").
- This function does not validate the existence of the objName for objects referenced in other packages. As such it can return references for objects in Go Modules as long as those packages are marked to be tracked by the parser.
type File ¶
type File struct {
PathToName map[string]string // path -> local name
NameToPath map[string]string // local name -> path
Idents map[*ast.Ident]*Name // ident -> resolved
Calls []*ast.CallExpr
}
File provides file-level name resolution results.
type Name ¶
type Name struct {
Package bool // package symbol
Local bool // locally defined symbol
ImportPath string // non-zero indicates it resolves to the package with the given import path
}
Name provides metadata for a single identifier.
type PkgDecl ¶
type PkgDecl struct {
Name string
File *est.File
Pos token.Pos
Type token.Token // CONST, TYPE, VAR, FUNC
Func *ast.FuncDecl // for Type == FUNC
Spec ast.Spec // for other types
Doc string
}
PkgDecl provides metadata for a package-level declaration.
type Resolution ¶
type Resolution struct {
Decls map[string]*PkgDecl // package-level declarations, keyed by name
Files map[*est.File]*File
}
Resolution represents the name resolution results.
func Resolve ¶
func Resolve(fset *token.FileSet, track TrackedPackages, pkg *est.Package) (*Resolution, error)
Resolve resolves information about the names (idents) in the given package. The reported error is of type scanner.ErrorList if non-nil.
type TrackedPackages ¶
TrackedPackages defines the set of packages to track, defined as a map from import path to package name.
It is used to allow Resolve to efficiently determine the name of a package given its import path, as one otherwise needs to parse the package source to find it.