SLING-9706 - The HTL Java Compiler does not correctly negate equals
diff --git a/src/main/java/org/apache/sling/scripting/sightly/java/compiler/impl/operator/EquivalenceOpGen.java b/src/main/java/org/apache/sling/scripting/sightly/java/compiler/impl/operator/EquivalenceOpGen.java
index 4a6d79b..eeb6676 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/java/compiler/impl/operator/EquivalenceOpGen.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/java/compiler/impl/operator/EquivalenceOpGen.java
@@ -44,7 +44,7 @@
Type type = OpHelper.sameType(left, right);
if (type != null && OpHelper.isNumericType(type) || type == Type.BOOLEAN || type == Type.UNKNOWN) {
generateEqualsOperator(source, visitor, left.getNode(), right.getNode());
- } else if (type != Type.UNKNOWN) {
+ } else {
generateEqualsMethod(source, visitor, left, right);
}
}
@@ -62,6 +62,9 @@
private void generateEqualsMethod(JavaSource source, SideEffectVisitor visitor, TypedNode leftNode, TypedNode rightNode) {
boolean performCast = leftNode.getType().isPrimitive();
+ if (negated) {
+ source.negation();
+ }
if (performCast) {
source.startExpression();
source.cast(Type.UNKNOWN.getNativeClass());