Overview | Package | Class | Deprecated | Index | Help
| Groovy Documentation
| FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.codehaus.groovy.ast.expr
[Java] 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

    public class DeclarationExpression
    extends BinaryExpression

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`.

Authors:
  Jochen Theodorou
  Hamlet D'Arcy

Version:
  \$Revision\$

Constructor Summary
`DeclarationExpression(VariableExpression left, Token operation, Expression right)` Creates a DeclarationExpression for VariableExpressions like "def x" or "String y = 'foo'".
`DeclarationExpression(Expression left, Token operation, Expression right)` Creates a DeclarationExpression for Expressions like "def (x, y) = [1, 2]"

Method Summary
`TupleExpression` | `getTupleExpression()` This method returns the left hand side of the declaration cast to the TupleExpression type.
`VariableExpression` | `getVariableExpression()` This method returns the left hand side of the declaration cast to the VariableExpression type.
`boolean` | `isMultipleAssignmentDeclaration()` This method tells you if this declaration is a multiple assignment declaration, which has the form "def (x, y) = ..." in Groovy.
`void` | `setLeftExpression(Expression leftExpression)` This method sets the leftExpression for this BinaryExpression.
`void` | `setRightExpression(Expression rightExpression)`
`Expression` | `transformExpression(ExpressionTransformer transformer)`
`void` | `visit(GroovyCodeVisitor visitor)`

Methods inherited from class BinaryExpression
getLeftExpression, getOperation, getRightExpression, getText, newAssignmentExpression, newInitializationExpression, setLeftExpression, setRightExpression, toString, transformExpression, visit

Methods inherited from class Expression
getType, setType, transformExpression, transformExpressions, transformExpressions

Methods inherited from class AnnotatedNode
addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic

Methods inherited from class ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getNodeMetaData, getText, putNodeMetaData, removeNodeMetaData, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setNodeMetaData, setSourcePosition, visit

Methods inherited from class java.lang.Object
java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()

Constructor Detail

### 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 declaration
    `operation` - the operation, typically an assignment operator
    `right` - 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 operator
    `right` - the right hand side of a declaration

Method Detail

### 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.
  throws:
    ClassCastException if the left hand side is not a TupleExpression (and is probably a VariableExpression).
  Returns:
    left hand side of multiple assignment declarations

### 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.
  throws:
    ClassCastException if the left hand side is not a VariableExpression (and is probably a multiple assignment statement).
  Returns:
    left hand side of normal variable declarations

### 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.

### 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.
  Parameters:
    `leftExpression` - either a VariableExpression or a TupleExpression with one or more elements.

### setRightExpression

    public void setRightExpression(Expression rightExpression)

### transformExpression

    public Expression transformExpression(ExpressionTransformer transformer)

### visit

    public void visit(GroovyCodeVisitor visitor)

Groovy Documentation