" 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
.
- Version:
- $Revision$
- Author:
- Jochen Theodorou, Hamlet D'Arcy
Methods inherited from class org.codehaus.groovy.ast.ASTNode |
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
DeclarationExpression
public DeclarationExpression(VariableExpression left,
Token operation,
Expression right)
- Creates a DeclarationExpression for VariableExpressions like "def x" or "String y = 'foo'".
- Parameters:
left
- the left hand side of a variable declarationoperation
- the operation, typically an assignment operatorright
- the right hand side of a declaration
DeclarationExpression
public DeclarationExpression(Expression left,
Token operation,
Expression right)
- Creates a DeclarationExpression for Expressions like "def (x, y) = [1, 2]"
- Parameters:
left
- the left hand side of a declaration. Must be either a VariableExpression or
a TupleExpression with at least one element.operation
- the operation, typically an assignment operatorright
- the right hand side of a declaration
visit
public void visit(GroovyCodeVisitor visitor)
- Overrides:
visit
in class BinaryExpression
getVariableExpression
public VariableExpression getVariableExpression()
- This 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:
java.lang.ClassCastException
- if the left hand side is not a VariableExpression (and is probably a multiple assignment statement).
getTupleExpression
public TupleExpression getTupleExpression()
- This 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:
java.lang.ClassCastException
- if the left hand side is not a TupleExpression (and is probably a VariableExpression).
setLeftExpression
public void setLeftExpression(Expression leftExpression)
- This method sets the leftExpression for this BinaryExpression. The parameter must be
either a VariableExpression or a TupleExpression with one or more elements.
- Overrides:
setLeftExpression
in class BinaryExpression
- Parameters:
leftExpression
- either a VariableExpression or a TupleExpression with one or more elements.
setRightExpression
public void setRightExpression(Expression rightExpression)
- Overrides:
setRightExpression
in class BinaryExpression
transformExpression
public Expression transformExpression(ExpressionTransformer transformer)
- Description copied from class:
Expression
- Return a copy of the expression calling the transformer on any nested expressions
- Overrides:
transformExpression
in class BinaryExpression
isMultipleAssignmentDeclaration
public 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.