org.codehaus.groovy.ast.expr
Class ElvisOperatorExpression

java.lang.Object
  extended by org.codehaus.groovy.ast.ASTNode
      extended by org.codehaus.groovy.ast.expr.Expression
          extended by org.codehaus.groovy.ast.expr.TernaryExpression
              extended by org.codehaus.groovy.ast.expr.ElvisOperatorExpression

public class ElvisOperatorExpression
extends TernaryExpression

Represents a short ternary expression x ?: y, which is equal to

 def truePart = x
 def booleanPart = truePart as boolean
 booleanPart? truePart : y
 
Even if x is no atomic expression, x will be evaluated only once. Example:
 class Foo { 
   def index=0 
   def getX(){ index++; return index }
 }
 def foo = new Foo()
 def result = foo.x ?: "false case" 
 assert foo.index == 1
 assert result == 1 
 

Since:
1.1
Author:
Jochen Theodorou

Constructor Summary
ElvisOperatorExpression(Expression base, Expression falseExpression)
           
 
Method Summary
 Expression transformExpression(ExpressionTransformer transformer)
          Return a copy of the expression calling the transformer on any nested expressions
 void visit(GroovyCodeVisitor visitor)
           
 
Methods inherited from class org.codehaus.groovy.ast.expr.TernaryExpression
getBooleanExpression, getFalseExpression, getText, getTrueExpression, getType, toString
 
Methods inherited from class org.codehaus.groovy.ast.expr.Expression
setType, transformExpressions
 
Methods inherited from class org.codehaus.groovy.ast.ASTNode
getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setSourcePosition
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ElvisOperatorExpression

public ElvisOperatorExpression(Expression base,
                               Expression falseExpression)
Method Detail

visit

public void visit(GroovyCodeVisitor visitor)
Overrides:
visit in class TernaryExpression

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 TernaryExpression

Copyright © 2003-2009 The Codehaus. All rights reserved.