Package org.codehaus.groovy.ast.expr
Class ElvisOperatorExpression
- java.lang.Object
-
- org.codehaus.groovy.ast.ASTNode
-
- org.codehaus.groovy.ast.AnnotatedNode
-
- org.codehaus.groovy.ast.expr.Expression
-
- org.codehaus.groovy.ast.expr.TernaryExpression
-
- org.codehaus.groovy.ast.expr.ElvisOperatorExpression
-
- All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>
,NodeMetaDataHandler
public class ElvisOperatorExpression extends TernaryExpression
Represents a short ternary expression x ?: y, which is equal todef 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.5
-
-
Field Summary
-
Fields inherited from class org.codehaus.groovy.ast.expr.Expression
EMPTY_ARRAY
-
Fields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT
-
-
Constructor Summary
Constructors Constructor Description ElvisOperatorExpression(Expression base, Expression falseExpression)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Expression
transformExpression(ExpressionTransformer transformer)
Return a copy of the expression calling the transformer on any nested expressionsvoid
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, transformExpressions
-
Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSynthetic
-
Methods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePosition
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
-
-
-
Constructor Detail
-
ElvisOperatorExpression
public ElvisOperatorExpression(Expression base, Expression falseExpression)
-
-
Method Detail
-
visit
public void visit(GroovyCodeVisitor visitor)
- Overrides:
visit
in classTernaryExpression
-
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 classTernaryExpression
-
-