Package org.codehaus.groovy.ast.expr
Class DeclarationExpression
java.lang.Object
org.codehaus.groovy.ast.ASTNode
org.codehaus.groovy.ast.AnnotatedNode
org.codehaus.groovy.ast.expr.Expression
org.codehaus.groovy.ast.expr.BinaryExpression
org.codehaus.groovy.ast.expr.DeclarationExpression
- All Implemented Interfaces:
- GroovydocHolder<AnnotatedNode>,- NodeMetaDataHandler
Represents one or more local variables. Typically it is a single local variable
 declared by name with an expression like "def foo" or with type "String foo". However,
 the multiple assignment feature allows you to create two or more variables using
 an expression like: 
def (x, y) = [1, 2].
 
 You can access the left hand side of a declaration using the
 "Expression getLeftExpression()" method. In which case you might then
 use instanceof and casting to perform operations specific to a
 single local variable (VariableExpression) or for the multiple
 assignment case (TupleExpression).
 
 Alternatively, if isMultipleAssignmentDeclaration() is false
 you can use the method "VariableExpression getVariableExpression()" method.
 Similarly, if isMultipleAssignmentDeclaration() is true
 you can use the method "TupleExpression getTupleExpression()" method.
 Calling either of these expression getters when the "isMultipleAssignment" condition
 is not appropriate is unsafe and will result in a ClassCastException.
- 
Field SummaryFields inherited from class org.codehaus.groovy.ast.expr.ExpressionEMPTY_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolderDOC_COMMENT
- 
Constructor SummaryConstructorsConstructorDescriptionDeclarationExpression(Expression left, Token operation, Expression right) Creates a declaration like "def v" or "int w = 0" or "def (x, y) = [1, 2]".DeclarationExpression(VariableExpression left, Token operation, Expression right) Creates a declaration like "def v" or "int w = 0".
- 
Method SummaryModifier and TypeMethodDescriptiongetText()This method returns the left hand side of the declaration cast to the TupleExpression type.getType()This method returns the left hand side of the declaration cast to the VariableExpression type.booleanThis method tells you if this declaration is a multiple assignment declaration, which has the form "def (x, y) = ..." in Groovy.voidsetLeftExpression(Expression leftExpression) This method sets the leftExpression for this BinaryExpression.voidsetRightExpression(Expression rightExpression) transformExpression(ExpressionTransformer transformer) Transforms this expression and any nested expressions.voidvisit(GroovyCodeVisitor visitor) Methods inherited from class org.codehaus.groovy.ast.expr.BinaryExpressiongetLeftExpression, getOperation, getRightExpression, isSafe, newAssignmentExpression, newInitializationExpression, setSafe, toStringMethods inherited from class org.codehaus.groovy.ast.expr.ExpressionsetType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNodeaddAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNodecopyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandlercopyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
- 
Constructor Details- 
DeclarationExpressionCreates a declaration like "def v" or "int w = 0".- Parameters:
- left- the left hand side of a variable declaration
- operation- the operation, assumed to be assignment operator
- right- the right hand side of a declaration;- EmptyExpressionfor no initial value
 
- 
DeclarationExpressionCreates a declaration like "def v" or "int w = 0" or "def (x, y) = [1, 2]".- Parameters:
- left- the left hand side of a declaration -- either a- VariableExpressionor a- TupleExpressionwith at least one element
- operation- the operation, assumed to be assignment operator
- right- the right hand side of a declaration
 
 
- 
- 
Method Details- 
visit- Overrides:
- visitin class- BinaryExpression
 
- 
getVariableExpressionThis method returns the left hand side of the declaration cast to the VariableExpression type. This is an unsafe method to call. In a multiple assignment statement, the left hand side will be a TupleExpression and a ClassCastException will occur. If you invoke this method then be sure to invoke isMultipleAssignmentDeclaration() first to check that it is safe to do so. If that method returns true then this method is safe to call.- Returns:
- left hand side of normal variable declarations
- Throws:
- ClassCastException- if the left hand side is not a VariableExpression (and is probably a multiple assignment statement).
 
- 
getTupleExpressionThis method returns the left hand side of the declaration cast to the TupleExpression type. This is an unsafe method to call. In a single assignment statement, the left hand side will be a VariableExpression and a ClassCastException will occur. If you invoke this method then be sure to invoke isMultipleAssignmentDeclaration() first to check that it is safe to do so. If that method returns true then this method is safe to call.- Returns:
- left hand side of multiple assignment declarations
- Throws:
- ClassCastException- if the left hand side is not a TupleExpression (and is probably a VariableExpression).
 
- 
getType- Overrides:
- getTypein class- Expression
 
- 
getText- Overrides:
- getTextin class- BinaryExpression
 
- 
setLeftExpressionThis method sets the leftExpression for this BinaryExpression. The parameter must be either a VariableExpression or a TupleExpression with one or more elements.- Overrides:
- setLeftExpressionin class- BinaryExpression
- Parameters:
- leftExpression- either a VariableExpression or a TupleExpression with one or more elements.
 
- 
setRightExpression- Overrides:
- setRightExpressionin class- BinaryExpression
 
- 
transformExpressionDescription copied from class:ExpressionTransforms this expression and any nested expressions.- Overrides:
- transformExpressionin class- BinaryExpression
 
- 
isMultipleAssignmentDeclarationpublic boolean isMultipleAssignmentDeclaration()This method tells you if this declaration is a multiple assignment declaration, which has the form "def (x, y) = ..." in Groovy. If this method returns true, then the left hand side is an ArgumentListExpression. Do not call "getVariableExpression()" on this object if this method returns true, instead use "getLeftExpression()".- Returns:
- true if this declaration is a multiple assignment declaration, which means the left hand side is an ArgumentListExpression.
 
 
-