Class ElvisOperatorExpression

All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>, NodeMetaDataHandler

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.5
  • Constructor Details

  • Method Details

    • transformExpression

      public Expression transformExpression(ExpressionTransformer transformer)
      Description copied from class: Expression
      Transforms this expression and any nested expressions according to the provided transformer. This method is called during AST transformation phases and must recursively transform any nested expressions to support full AST tree transformation.
      Overrides:
      transformExpression in class TernaryExpression
      Parameters:
      transformer - the ExpressionTransformer to apply
      Returns:
      a transformed copy of this expression (or this expression itself if no changes are needed)
    • visit

      public void visit(GroovyCodeVisitor visitor)
      Description copied from class: ASTNode
      Accepts a code visitor for AST traversal and transformation. Subclasses must implement this method to support visitor pattern-based processing. The visitor pattern enables decoupling of AST structure from processing logic.
      Overrides:
      visit in class TernaryExpression
      Parameters:
      visitor - the GroovyCodeVisitor to process this node