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
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_ARRAYFields inherited from interface groovy.lang.groovydoc.GroovydocHolder
DOC_COMMENT -
Constructor Summary
ConstructorsConstructorDescriptionCompareIdentityExpression(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 TypeMethodDescriptionbooleanisEq()Indicates whether this expression checks identity equality rather than inequality.voidPrevents changing the fixed boolean result type of this expression.transformExpression(ExpressionTransformer transformer) Transforms both operands while preserving identity-comparison semantics.voidvisit(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, toStringMethods inherited from class org.codehaus.groovy.ast.expr.Expression
getType, transformExpressions, transformExpressionsMethods inherited from class org.codehaus.groovy.ast.AnnotatedNode
addAnnotation, addAnnotation, addAnnotations, getAnnotations, getAnnotations, getDeclaringClass, getGroovydoc, getInstance, hasNoRealSourcePosition, isSynthetic, setDeclaringClass, setHasNoRealSourcePosition, setSyntheticMethods inherited from class org.codehaus.groovy.ast.ASTNode
copyNodeMetaData, getColumnNumber, getLastColumnNumber, getLastLineNumber, getLineNumber, getMetaDataMap, setColumnNumber, setLastColumnNumber, setLastLineNumber, setLineNumber, setMetaDataMap, setSourcePositionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.codehaus.groovy.ast.NodeMetaDataHandler
copyNodeMetaData, getNodeMetaData, getNodeMetaData, getNodeMetaData, newMetaDataMap, putNodeMetaData, removeNodeMetaData, setNodeMetaData
-
Constructor Details
-
CompareIdentityExpression
Creates an identity comparison between two expressions.- Parameters:
leftExpression- the left operandeq-truefor===;falsefor!==rightExpression- the right operand
-
CompareIdentityExpression
Creates an identity-equality comparison between two expressions.- Parameters:
leftExpression- the left operandrightExpression- the right operand
-
-
Method Details
-
isEq
public boolean isEq()Indicates whether this expression checks identity equality rather than inequality.- Returns:
truefor===;falsefor!==
-
setType
Prevents changing the fixed boolean result type of this expression.- Overrides:
setTypein classExpression- Parameters:
type- ignored- Throws:
UnsupportedOperationException- always
-
transformExpression
Transforms both operands while preserving identity-comparison semantics.- Overrides:
transformExpressionin classBinaryExpression- Parameters:
transformer- the expression transformer to apply- Returns:
- a transformed identity-comparison expression
-
visit
Emits direct reference-comparison bytecode for this expression.- Overrides:
visitin classBinaryExpression- Parameters:
visitor- the visitor to accept
-