Package org.mozilla.javascript.ast
Class Scope
- java.lang.Object
-
- org.mozilla.javascript.Node
-
- org.mozilla.javascript.ast.AstNode
-
- org.mozilla.javascript.ast.Jump
-
- org.mozilla.javascript.ast.Scope
-
- Direct Known Subclasses:
ArrayComprehension
,GeneratorExpression
,LetNode
,Loop
,ScriptNode
public class Scope extends Jump
Represents a scope in the lexical scope chain. Base type for allAstNode
implementations that can introduce a new scope.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.mozilla.javascript.ast.AstNode
AstNode.PositionComparator
-
Nested classes/interfaces inherited from class org.mozilla.javascript.Node
Node.NodeIterator
-
-
Field Summary
-
Fields inherited from class org.mozilla.javascript.Node
ATTRIBUTE_FLAG, BOTH, CASEARRAY_PROP, CATCH_SCOPE_PROP, CONTROL_BLOCK_PROP, DECR_FLAG, DESCENDANTS_FLAG, DESTRUCTURING_ARRAY_LENGTH, DESTRUCTURING_NAMES, DESTRUCTURING_PARAMS, DESTRUCTURING_SHORTHAND, DIRECTCALL_PROP, END_DROPS_OFF, END_RETURNS, END_RETURNS_VALUE, END_UNREACHED, END_YIELDS, EXPRESSION_CLOSURE_PROP, FUNCTION_PROP, GENERATOR_END_PROP, INCRDECR_PROP, ISNUMBER_PROP, JSDOC_PROP, LABEL_ID_PROP, LAST_PROP, LEFT, LOCAL_BLOCK_PROP, LOCAL_PROP, MEMBER_TYPE_PROP, NAME_PROP, NON_SPECIALCALL, OBJECT_IDS_PROP, PARENTHESIZED_PROP, POST_FLAG, PROPERTY_FLAG, REGEXP_PROP, RIGHT, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, VARIABLE_PROP
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addChildScope(Scope child)
Add a scope to our list of child scopes.void
clearParentScope()
Used only for code generation.java.util.List<Scope>
getChildScopes()
Return a list of the scopes whose parent is this scope.Scope
getDefiningScope(java.lang.String name)
Returns the scope in which this name is definedScope
getParentScope()
java.util.List<AstNode>
getStatements()
Returns a copy of the child list, with each child cast to anAstNode
.Symbol
getSymbol(java.lang.String name)
Looks up a symbol in this scope.java.util.Map<java.lang.String,Symbol>
getSymbolTable()
Returns the symbol table for this scope.ScriptNode
getTop()
Returns current script or function scopestatic void
joinScopes(Scope source, Scope dest)
Copies all symbols from source scope to dest scope.void
putSymbol(Symbol symbol)
Enters a symbol into this scope.void
replaceWith(Scope newScope)
Used by the parser; not intended for typical use.void
setParentScope(Scope parentScope)
Sets parent scopevoid
setSymbolTable(java.util.Map<java.lang.String,Symbol> table)
Sets the symbol table for this scope.void
setTop(ScriptNode top)
Sets top current script or function scopestatic Scope
splitScope(Scope scope)
Creates a new scope node, moving symbol table information from "scope" to the new node, and making "scope" a nested scope contained by the new node.java.lang.String
toSource(int depth)
Emits source code for this node.void
visit(NodeVisitor v)
Jumps are only used directly during code generation, and do not support this interface.-
Methods inherited from class org.mozilla.javascript.ast.Jump
getContinue, getDefault, getFinally, getJumpStatement, getLoop, setContinue, setDefault, setFinally, setJumpStatement, setLoop
-
Methods inherited from class org.mozilla.javascript.ast.AstNode
addChild, codeBug, compareTo, debugPrint, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, setBounds, setLength, setParent, setPosition, setRelative, shortName, toSource
-
Methods inherited from class org.mozilla.javascript.Node
addChildAfter, addChildBefore, addChildrenToBack, addChildrenToFront, addChildToBack, addChildToFront, getChildBefore, getDouble, getExistingIntProp, getFirstChild, getIntProp, getJsDoc, getJsDocNode, getLastChild, getLastSibling, getNext, getProp, getScope, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, resetTargets, setDouble, setJsDocNode, setLineno, setScope, setString, setType, toString, toStringTree
-
-
-
-
Method Detail
-
getParentScope
public Scope getParentScope()
-
setParentScope
public void setParentScope(Scope parentScope)
Sets parent scope
-
clearParentScope
public void clearParentScope()
Used only for code generation.
-
getChildScopes
public java.util.List<Scope> getChildScopes()
Return a list of the scopes whose parent is this scope.- Returns:
- the list of scopes we enclose, or
null
if none
-
addChildScope
public void addChildScope(Scope child)
Add a scope to our list of child scopes. Sets the child's parent scope to this scope.- Throws:
java.lang.IllegalStateException
- if the child's parent scope is non-null
-
replaceWith
public void replaceWith(Scope newScope)
Used by the parser; not intended for typical use. Changes the parent-scope links for this scope's child scopes to the specified new scope. Copies symbols from this scope into new scope.- Parameters:
newScope
- the scope that will replace this one on the scope stack.
-
getTop
public ScriptNode getTop()
Returns current script or function scope
-
setTop
public void setTop(ScriptNode top)
Sets top current script or function scope
-
splitScope
public static Scope splitScope(Scope scope)
Creates a new scope node, moving symbol table information from "scope" to the new node, and making "scope" a nested scope contained by the new node. Useful for injecting a new scope in a scope chain.
-
joinScopes
public static void joinScopes(Scope source, Scope dest)
Copies all symbols from source scope to dest scope.
-
getDefiningScope
public Scope getDefiningScope(java.lang.String name)
Returns the scope in which this name is defined- Parameters:
name
- the symbol to look up- Returns:
- this
Scope
, one of its parent scopes, ornull
if the name is not defined any this scope chain
-
getSymbol
public Symbol getSymbol(java.lang.String name)
Looks up a symbol in this scope.- Parameters:
name
- the symbol name- Returns:
- the Symbol, or
null
if not found
-
putSymbol
public void putSymbol(Symbol symbol)
Enters a symbol into this scope.
-
getSymbolTable
public java.util.Map<java.lang.String,Symbol> getSymbolTable()
Returns the symbol table for this scope.- Returns:
- the symbol table. May be
null
.
-
setSymbolTable
public void setSymbolTable(java.util.Map<java.lang.String,Symbol> table)
Sets the symbol table for this scope. May benull
.
-
getStatements
public java.util.List<AstNode> getStatements()
Returns a copy of the child list, with each child cast to anAstNode
.- Throws:
java.lang.ClassCastException
- if any non-AstNode
objects are in the child list, e.g. if this method is called after the code generator begins the tree transformation.
-
toSource
public java.lang.String toSource(int depth)
Description copied from class:AstNode
Emits source code for this node. Callee is responsible for calling this function recursively on children, incrementing indent as appropriate.Note: if the parser was in error-recovery mode, some AST nodes may have
null
children that are expected to be non-null
when no errors are present. In this situation, the behavior of thetoSource
method is undefined:toSource
implementations may assume that the AST node is error-free, since it is intended to be invoked only at runtime after a successful parse.
-
visit
public void visit(NodeVisitor v)
Description copied from class:Jump
Jumps are only used directly during code generation, and do not support this interface.
-
-