public class ArrayLiteral extends AstNode implements DestructuringForm
null
, although the list will have no elements if the Array literal
is empty.
Node type is Token.ARRAYLIT
.
ArrayLiteral : [ Elisionopt ] [ ElementList ] [ ElementList , Elisionopt ] ElementList : Elisionopt AssignmentExpression ElementList , Elisionopt AssignmentExpression Elision : , Elision ,
AstNode.DebugPrintVisitor, AstNode.PositionComparator
Node.NodeIterator
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, 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, SKIP_INDEXES_PROP, SPECIALCALL_EVAL, SPECIALCALL_PROP, SPECIALCALL_WITH, TARGETBLOCK_PROP, type, VARIABLE_PROP
Constructor and Description |
---|
ArrayLiteral() |
ArrayLiteral(int pos) |
ArrayLiteral(int pos,
int len) |
Modifier and Type | Method and Description |
---|---|
void |
addElement(AstNode element)
Adds an element to the list, and sets its parent to this node.
|
int |
getDestructuringLength()
Returns destructuring length
|
AstNode |
getElement(int index)
Returns element at specified index.
|
java.util.List<AstNode> |
getElements()
Returns the element list
|
int |
getSize()
Returns the number of elements in this
Array literal,
including empty elements. |
int |
getSkipCount()
Used by code generator.
|
boolean |
isDestructuring()
Returns true if this node is in a destructuring position:
a function parameter, the target of a variable initializer, the
iterator of a for..in loop, etc.
|
void |
setDestructuringLength(int destructuringLength)
Sets destructuring length.
|
void |
setElements(java.util.List<AstNode> elements)
Sets the element list, and sets each element's parent to this node.
|
void |
setIsDestructuring(boolean destructuring)
Marks this node as being a destructuring form - that is, appearing
in a context such as
for ([a, b] in ...) where it's the
target of a destructuring assignment. |
void |
setSkipCount(int count)
Used by code generator.
|
java.lang.String |
toSource(int depth)
Emits source code for this node.
|
void |
visit(NodeVisitor v)
Visits this node, then visits its element expressions in order.
|
addChild, assertNotNull, codeBug, compareTo, debugPrint, depth, getAbsolutePosition, getAstRoot, getEnclosingFunction, getEnclosingScope, getLength, getLineno, getParent, getPosition, hasSideEffects, makeIndent, operatorToString, printList, setBounds, setLength, setParent, setPosition, setRelative, shortName, toSource
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
public ArrayLiteral()
public ArrayLiteral(int pos)
public ArrayLiteral(int pos, int len)
public java.util.List<AstNode> getElements()
EmptyExpression
nodes.public void setElements(java.util.List<AstNode> elements)
elements
- the element list. Can be null
.public void addElement(AstNode element)
element
- the element to addjava.lang.IllegalArgumentException
- if element is null
. To indicate
an empty element, use an EmptyExpression
node.public int getSize()
Array
literal,
including empty elements.public AstNode getElement(int index)
index
- the index of the element to retrievejava.lang.IndexOutOfBoundsException
- if the index is invalidpublic int getDestructuringLength()
public void setDestructuringLength(int destructuringLength)
for ([a,] in obj)
is legal,
but for ([a] in obj)
is not since we have both key and
value supplied. The difference is only meaningful in array literals
used in destructuring-assignment contexts.public int getSkipCount()
public void setSkipCount(int count)
count
- the count of empty elementspublic void setIsDestructuring(boolean destructuring)
for ([a, b] in ...)
where it's the
target of a destructuring assignment.setIsDestructuring
in interface DestructuringForm
public boolean isDestructuring()
isDestructuring
in interface DestructuringForm
public java.lang.String toSource(int depth)
AstNode
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 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)
EmptyExpression
objects, so the callback will never be passed null
.