Class CompareIdentityExpression

All Implemented Interfaces:
GroovydocHolder<AnnotatedNode>, NodeMetaDataHandler

public class CompareIdentityExpression extends BinaryExpression
Compares two objects using identity comparison. This expression will generate bytecode using the IF_ACMPNE instruction, instead of using the "equals" method that is currently mapped to "==" in Groovy. This expression should only be used to compare to objects, not primitives, and only in the context of reference equality check.
  • Constructor Details

    • CompareIdentityExpression

      public CompareIdentityExpression(Expression leftExpression, boolean eq, Expression rightExpression)
      Creates an identity comparison between two expressions.
      Parameters:
      leftExpression - the left operand
      eq - true for ===; false for !==
      rightExpression - the right operand
    • CompareIdentityExpression

      public CompareIdentityExpression(Expression leftExpression, Expression rightExpression)
      Creates an identity-equality comparison between two expressions.
      Parameters:
      leftExpression - the left operand
      rightExpression - the right operand
  • Method Details

    • isEq

      public boolean isEq()
      Indicates whether this expression checks identity equality rather than inequality.
      Returns:
      true for ===; false for !==
    • setType

      public void setType(ClassNode type)
      Prevents changing the fixed boolean result type of this expression.
      Overrides:
      setType in class Expression
      Parameters:
      type - ignored
      Throws:
      UnsupportedOperationException - always
    • transformExpression

      public Expression transformExpression(ExpressionTransformer transformer)
      Transforms both operands while preserving identity-comparison semantics.
      Overrides:
      transformExpression in class BinaryExpression
      Parameters:
      transformer - the expression transformer to apply
      Returns:
      a transformed identity-comparison expression
    • visit

      public void visit(GroovyCodeVisitor visitor)
      Emits direct reference-comparison bytecode for this expression.
      Overrides:
      visit in class BinaryExpression
      Parameters:
      visitor - the visitor to accept