resolve

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 3, 2019 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Overview

Package resolve defines a name-resolution pass for Starlark abstract syntax trees.

The resolver sets the Locals and FreeVars arrays of each DefStmt and the LocalIndex field of each syntax.Ident that refers to a local or free variable. It also sets the Locals array of a File for locals bound by comprehensions outside any function. Identifiers for global variables do not get an index.

Index

Constants

View Source
const (
	Undefined   = syntax.UndefinedScope
	Local       = syntax.LocalScope
	Cell        = syntax.CellScope
	Free        = syntax.FreeScope
	Global      = syntax.GlobalScope
	Predeclared = syntax.PredeclaredScope
	Universal   = syntax.UniversalScope
)

Variables

View Source
var (
	AllowNestedDef      = false // allow def statements within function bodies
	AllowLambda         = false // allow lambda expressions
	AllowFloat          = false // allow floating point literals, the 'float' built-in, and x / y
	AllowSet            = false // allow the 'set' built-in
	AllowGlobalReassign = false // allow reassignment to globals declared in same file (deprecated)
	AllowRecursion      = false // allow while statements and recursive functions

	AllowBitwise = true // obsolete; bitwise operations (&, |, ^, ~, <<, and >>) are always enabled
)

global options These features are either not standard Starlark (yet), or deprecated features of the BUILD language, so we put them behind flags.

Functions

func File

func File(file *syntax.File, isPredeclared, isUniversal func(name string) bool) error

File resolves the specified file.

The isPredeclared and isUniversal predicates report whether a name is a pre-declared identifier (visible in the current module) or a universal identifier (visible in every module). Clients should typically pass predeclared.Has for the first and starlark.Universe.Has for the second, where predeclared is the module's StringDict of predeclared names and starlark.Universe is the standard set of built-ins. The isUniverse predicate is supplied a parameter to avoid a cyclic dependency upon starlark.Universe, not because users should ever need to redefine it.

Types

type Binding

type Binding = syntax.Binding

func Expr

func Expr(expr syntax.Expr, isPredeclared, isUniversal func(name string) bool) ([]*Binding, error)

Expr resolves the specified expression. It returns the local variables bound within the expression.

The isPredeclared and isUniversal predicates behave as for the File function.

type Error

type Error struct {
	Pos syntax.Position
	Msg string
}

An Error describes the nature and position of a resolver error.

func (Error) Error

func (e Error) Error() string

type ErrorList

type ErrorList []Error // len > 0

An ErrorList is a non-empty list of resolver error messages.

func (ErrorList) Error

func (e ErrorList) Error() string

Jump to

Keyboard shortcuts

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