Package org.codehaus.groovy.transform.sc.transformers

# Class CompareIdentityExpression

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.transform.sc.transformers.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.

- ## 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
  `CompareIdentityExpression(Expression leftExpression, boolean eq, Expression rightExpression)`
  Creates an identity comparison between two expressions.
  `CompareIdentityExpression(Expression leftExpression, Expression rightExpression)`
  Creates an identity-equality comparison between two expressions.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `isEq()`
  Indicates whether this expression checks identity equality rather than inequality.
  `void`
  `setType(ClassNode type)`
  Prevents changing the fixed boolean result type of this expression.
  `Expression`
  `transformExpression(ExpressionTransformer transformer)`
  Transforms both operands while preserving identity-comparison semantics.
  `void`
  `visit(GroovyCodeVisitor visitor)`
  Emits direct reference-comparison bytecode for this expression.

  ### Methods inherited from class org.codehaus.groovy.ast.expr.BinaryExpression

  `getLeftExpression, getOperation, getRightExpression, getText, isSafe, newAssignmentExpression, newInitializationExpression, setLeftExpression, setRightExpression, setSafe, toString`

  ### Methods inherited from class org.codehaus.groovy.ast.expr.Expression

  `getType, transformExpressions, transformExpressions`

  ### Methods inherited from class org.codehaus.groovy.ast.AnnotatedNode

  `addAnnotation, 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, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData`

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