public class Name extends AstNode
Token.NAME.
This node type is also used to represent certain non-identifier names that are part of the language syntax. It's used for the "get" and "set" pseudo-keywords for object-initializer getter/setter properties, and it's also used for the "*" wildcard in E4X XML namespace and name expressions.
AstNode.DebugPrintVisitor, AstNode.PositionComparatorNode.NodeIteratorinlineComment, length, parent, positionARROW_FUNCTION_PROP, ATTRIBUTE_FLAG, BOTH, CASEARRAY_PROP, CATCH_SCOPE_PROP, CONTROL_BLOCK_PROP, DECR_FLAG, DESCENDANTS_FLAG, DESTRUCTURING_ARRAY_LENGTH, DESTRUCTURING_NAMES, DESTRUCTURING_PARAMS, DIRECTCALL_PROP, END_DROPS_OFF, END_RETURNS, END_RETURNS_VALUE, END_UNREACHED, END_YIELDS, EXPRESSION_CLOSURE_PROP, first, FUNCTION_PROP, GENERATOR_END_PROP, INCRDECR_PROP, ISNUMBER_PROP, JSDOC_PROP, LABEL_ID_PROP, last, LAST_PROP, LEFT, lineno, LOCAL_BLOCK_PROP, LOCAL_PROP, MEMBER_TYPE_PROP, NAME_PROP, next, NON_SPECIALCALL, OBJECT_IDS_PROP, PARENTHESIZED_PROP, POST_FLAG, PROPERTY_FLAG, propListHead, REGEXP_PROP, RIGHT, SHORTHAND_PROPERTY_NAME, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, TEMPLATE_LITERAL_PROP, type, VARIABLE_PROP| Constructor and Description |
|---|
Name() |
Name(int pos) |
Name(int pos,
int len) |
Name(int pos,
int len,
java.lang.String name)
Constructs a new
Name |
Name(int pos,
java.lang.String name) |
| Modifier and Type | Method and Description |
|---|---|
Scope |
getDefiningScope()
Returns the
Scope in which this Name is defined. |
java.lang.String |
getIdentifier()
Returns the node's identifier
|
Scope |
getScope()
Return the
Scope associated with this node. |
boolean |
isLocalName()
Return true if this node is known to be defined as a symbol in a lexical scope other than the
top-level (global) scope.
|
int |
length()
Return the length of this node's identifier, to let you pretend it's a
String. |
void |
setIdentifier(java.lang.String identifier)
Sets the node's identifier
|
void |
setScope(Scope s)
Set the
Scope associated with this node. |
java.lang.String |
toSource(int depth)
Emits source code for this node.
|
void |
visit(NodeVisitor v)
Visits this node.
|
addChild, assertNotNull, codeBug, compareTo, debugPrint, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getInlineComment, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, printList, setBounds, setInlineComment, setLength, setParent, setPosition, setRelative, shortName, toSourceaddChildAfter, addChildBefore, addChildrenToBack, addChildrenToFront, addChildToBack, addChildToFront, getBigInt, getChildBefore, getDouble, getExistingIntProp, getFirstChild, getIntProp, getJsDoc, getJsDocNode, getLastChild, getLastSibling, getNext, getProp, getString, getType, hasChildren, hasConsistentReturnUsage, iterator, labelId, labelId, newNumber, newString, newString, newTarget, putIntProp, putProp, removeChild, removeChildren, removeProp, replaceChild, replaceChildAfter, resetTargets, setBigInt, setDouble, setJsDocNode, setLineno, setString, setType, toString, toStringTreepublic Name()
public Name(int pos)
public Name(int pos,
int len)
public Name(int pos,
int len,
java.lang.String name)
Namepos - node start positionlen - node lengthname - the identifier associated with this Name nodepublic Name(int pos,
java.lang.String name)
public java.lang.String getIdentifier()
public void setIdentifier(java.lang.String identifier)
java.lang.IllegalArgumentException - if identifier is nullpublic void setScope(Scope s)
Scope associated with this node. This method does not set the scope's
ast-node field to this node. The field exists only for temporary storage by the code
generator. Not every name has an associated scope - typically only function and variable
names (but not property names) are registered in a scope.public Scope getScope()
Scope associated with this node. This is only used for (and set
by) the code generator, so it will always be null in frontend AST-processing code. Use getDefiningScope() to find the lexical Scope in which this Name is defined,
if any.public Scope getDefiningScope()
Scope in which this Name is defined.null if it's not defined in the
current lexical scope chainpublic boolean isLocalName()
true if this name appears as local variable, a let-bound variable not in the
global scope, a function parameter, a loop variable, the property named in a PropertyGet, or in any other context where the node is known not to resolve to the
global scope. Returns false if the node is defined in the top-level scope (i.e.,
its defining scope is an AstRoot object), or if its name is not defined as a
symbol in the symbol table, in which case it may be an external or built-in name (or just
an error of some sort.)public int length()
String. Don't
confuse this method with the AstNode.getLength() method, which returns the range of
characters that this node overlaps in the source input.public java.lang.String toSource(int depth)
AstNodeNote: 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 the toSource 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.
public void visit(NodeVisitor v)