Class Scope

java.lang.Object
com.google.javascript.jscomp.Scope
All Implemented Interfaces:
StaticScope<JSType>, StaticSymbolTable<Scope.Var,Scope.Var>

public class Scope extends Object implements StaticScope<JSType>, StaticSymbolTable<Scope.Var,Scope.Var>
Scope contains information about a variable scope in JavaScript. Scopes can be nested, a scope points back to its parent scope. A Scope contains information about variables defined in that scope.

A Scope is also used as a lattice element for flow-sensitive type inference. As a lattice element, a Scope is viewed as a map from names to types. A name not in the map is considered to have the bottom type. The join of two maps m1 and m2 is the map of the union of names with JSType.getLeastSupertype(com.google.javascript.rhino.jstype.JSType) to meet the m1 type and m2 type.

See Also:
  • Method Details

    • getRootNode

      public Node getRootNode()
      Gets the container node of the scope. This is typically the FUNCTION node or the global BLOCK/SCRIPT node.
      Specified by:
      getRootNode in interface StaticScope<JSType>
    • getParent

      public Scope getParent()
    • getParentScope

      public StaticScope<JSType> getParentScope()
      Description copied from interface: StaticScope
      Returns the scope enclosing this one or null if none.
      Specified by:
      getParentScope in interface StaticScope<JSType>
    • getTypeOfThis

      public JSType getTypeOfThis()
      Gets the type of this in the current scope.
      Specified by:
      getTypeOfThis in interface StaticScope<JSType>
    • getSlot

      public Scope.Var getSlot(String name)
      Description copied from interface: StaticScope
      Returns any defined slot within this scope for this name. This call continues searching through parent scopes if a slot with this name is not found in the current scope.
      Specified by:
      getSlot in interface StaticScope<JSType>
      Parameters:
      name - The name of the variable slot to look up.
      Returns:
      The defined slot for the variable, or null if no definition exists.
    • getOwnSlot

      public Scope.Var getOwnSlot(String name)
      Description copied from interface: StaticScope
      Like getSlot but does not recurse into parent scopes.
      Specified by:
      getOwnSlot in interface StaticScope<JSType>
    • getVar

      public Scope.Var getVar(String name)
      Returns the variable, may be null
    • getArgumentsVar

      public Scope.Var getArgumentsVar()
      Get a unique VAR object to represents "arguments" within this scope
    • isDeclared

      public boolean isDeclared(String name, boolean recurse)
      Returns true if a variable is declared.
    • getVars

      public Iterator<Scope.Var> getVars()
      Return an iterator over all of the variables declared in this scope.
    • getReferences

      public Iterable<Scope.Var> getReferences(Scope.Var var)
      Description copied from interface: StaticSymbolTable
      Returns the references that point to the given symbol.
      Specified by:
      getReferences in interface StaticSymbolTable<Scope.Var,Scope.Var>
    • getScope

      public StaticScope<JSType> getScope(Scope.Var var)
      Description copied from interface: StaticSymbolTable
      Returns the scope for a given symbol.
      Specified by:
      getScope in interface StaticSymbolTable<Scope.Var,Scope.Var>
    • getAllSymbols

      public Iterable<Scope.Var> getAllSymbols()
      Description copied from interface: StaticSymbolTable
      Returns all variables in this symbol table.
      Specified by:
      getAllSymbols in interface StaticSymbolTable<Scope.Var,Scope.Var>
    • getVarCount

      public int getVarCount()
      Returns number of variables in this scope
    • isGlobal

      public boolean isGlobal()
      Returns whether this is the global scope.
    • isLocal

      public boolean isLocal()
      Returns whether this is a local scope (i.e. not the global scope).
    • getDeclarativelyUnboundVarsWithoutTypes

      public Iterator<Scope.Var> getDeclarativelyUnboundVarsWithoutTypes()
      Gets all variables declared with "var" but without declared types attached.