skylark: Index | Files

package resolve

import ""

Package resolve defines a name-resolution pass for Skylark 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.


Package Files



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)
    AllowBitwise        = false // allow bitwise operations (&, |, ^, ~, <<, and >>)

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

func Expr Uses

func Expr(expr syntax.Expr, isPredeclared, isUniversal func(name string) bool) ([]*syntax.Ident, 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.

func File Uses

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 skylark.Universe.Has for the second, where predeclared is the module's StringDict of predeclared names and skylark.Universe is the standard set of built-ins. The isUniverse predicate is supplied a parameter to avoid a cyclic dependency upon skylark.Universe, not because users should ever need to redefine it.

type Error Uses

type Error struct {
    Pos syntax.Position
    Msg string

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

func (Error) Error Uses

func (e Error) Error() string

type ErrorList Uses

type ErrorList []Error // len > 0

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

func (ErrorList) Error Uses

func (e ErrorList) Error() string

type Scope Uses

type Scope uint8

The Scope of a syntax.Ident indicates what kind of scope it has.

const (
    Undefined   Scope = iota // name is not defined
    Local                    // name is local to its function
    Free                     // name is local to some enclosing function
    Global                   // name is global to module
    Predeclared              // name is predeclared for this module (e.g. glob)
    Universal                // name is universal (e.g. len)

func (Scope) String Uses

func (scope Scope) String() string

Package resolve imports 4 packages (graph) and is imported by 6 packages. Updated 2018-08-27. Refresh now. Tools for package owners.