Package org.codehaus.groovy.ast.expr
Class ArrayExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.ArrayExpression
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>,NodeMetaDataHandler
Represents an array literal or array construction expression.
Supports both fixed-size array construction (e.g.,
new String[3] or new Integer[2][3])
and array initialization with explicit elements (e.g., new String[] { "foo", "bar" }).
The expression may be either an initializer-based array or a size-based array, but not both.-
Field Summary
Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionArrayExpression(ClassNode elementType, List<Expression> initExpressions) Creates an array using an initializer list of expressions corresponding to array elements.ArrayExpression(ClassNode elementType, List<Expression> initExpressions, List<Expression> sizeExpressions) Constructs an array expression with either size expressions or initializer expressions. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddExpression(Expression initExpression) Adds an element to the initializer expressions.Returns the base element type of the array (before array dimensions are applied).getExpression(int i) Returns the initializer expression at the specified index.Returns the list of initializer expressions for array elements.Returns the size expressions for each dimension of the array.getText()Returns a human-readable text representation of this AST node.booleanIndicates whether this array is defined by an explicit initializer or by size expressions.booleantoString()transformExpression(ExpressionTransformer transformer) Transforms this expression and any nested expressions according to the provided transformer.voidvisit(GroovyCodeVisitor visitor) Accepts a code visitor for AST traversal and transformation.Methods inherited from class org.codehaus.groovy.ast.expr.Expression
getType, setType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
Constructor Details
-
ArrayExpression
public ArrayExpression(ClassNode elementType, List<Expression> initExpressions, List<Expression> sizeExpressions) Constructs an array expression with either size expressions or initializer expressions.- Parameters:
elementType- the base element type of the array (non-null)initExpressions- the list of initializer expressions for array elements, or null for size-based constructionsizeExpressions- the list of size expressions (one per dimension) for fixed-size arrays, or null for initializer-based construction- Throws:
IllegalArgumentException- if both initExpressions and sizeExpressions are provided or both are null/emptyIllegalArgumentException- if any initializer is not anExpression
-
ArrayExpression
Creates an array using an initializer list of expressions corresponding to array elements.- Parameters:
elementType- the base element type of the array (non-null)initExpressions- the list of initializer expressions for array elements (non-null)
-
-
Method Details
-
transformExpression
Description copied from class:ExpressionTransforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.- Specified by:
transformExpressionin classExpression- Parameters:
transformer- theExpressionTransformerto apply- Returns:
- a transformed copy of this expression (or this expression itself if no changes are needed)
-
visit
Description copied from class:ASTNodeAccepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.- Overrides:
visitin classASTNode- Parameters:
visitor- theGroovyCodeVisitorto process this node
-
getElementType
Returns the base element type of the array (before array dimensions are applied).- Returns:
- the element type
-
getExpressions
Returns the list of initializer expressions for array elements.- Returns:
- a list of initializer expressions (non-null but may be empty for size-based arrays)
-
getExpression
Returns the initializer expression at the specified index.- Parameters:
i- the index of the element- Returns:
- the expression at the specified index
- Throws:
IndexOutOfBoundsException- if the index is out of range
-
addExpression
Adds an element to the initializer expressions.- Parameters:
initExpression- the expression to add (non-null)
-
getSizeExpression
Returns the size expressions for each dimension of the array.- Returns:
- a list with one expression per array dimension (non-null for size-based arrays, null for initializer-based)
-
getText
Description copied from class:ASTNodeReturns a human-readable text representation of this AST node. Used for debugging and error messages. Default implementation returns a message indicating the representation is not yet implemented for this node type. -
toString
-
isDynamic
public boolean isDynamic() -
hasInitializer
public boolean hasInitializer()Indicates whether this array is defined by an explicit initializer or by size expressions.- Returns:
- true if the array has an explicit initializer, false if defined by size expressions
-