From 715ae734a2fc766bb3f47ae1f3c82dc6ed559ea2 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 22 Jun 2015 16:51:51 +0300 Subject: [PATCH] fix equals templates (IDEA-141700) --- .../intellij/codeInsight/generation/equalsHelper.vm | 10 ++++++++++ .../intellij/codeInsight/generation/guavaEquals.vm | 6 +++--- .../intellij/codeInsight/generation/objectsEquals.vm | 6 +++--- ...terDifferentTypesSuperEqualsAndHashCodeGuava.java | 12 ++++++------ 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/equalsHelper.vm b/java/java-impl/src/com/intellij/codeInsight/generation/equalsHelper.vm index d6dabc95d5e4..eb51afdec3bd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/equalsHelper.vm +++ b/java/java-impl/src/com/intellij/codeInsight/generation/equalsHelper.vm @@ -47,3 +47,13 @@ if(this == $paramName) return true; Float.compare(${classInstanceName}.$field.accessor, $field.accessor) != 0 ## #end #end +#macro(addPrimitiveFieldComparisonConditionDirect $field) + $field.accessor == ${classInstanceName}.$field.accessor ## +#end +#macro(addDoubleFieldComparisonConditionDirect $field) + #if ($field.double) + Double.compare(${classInstanceName}.$field.accessor, $field.accessor) == 0 ## + #else + Float.compare(${classInstanceName}.$field.accessor, $field.accessor) == 0 ## + #end +#end diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/guavaEquals.vm b/java/java-impl/src/com/intellij/codeInsight/generation/guavaEquals.vm index 879ec80e2f8a..5213a009d6e1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/guavaEquals.vm +++ b/java/java-impl/src/com/intellij/codeInsight/generation/guavaEquals.vm @@ -15,12 +15,12 @@ Object $paramName){ #set($i = $i + 1) #if ($field.primitive) #if ($field.double || $field.float) - #addDoubleFieldComparisonCondition($field) ## + #addDoubleFieldComparisonConditionDirect($field) ## #else - #addPrimitiveFieldComparisonCondition($field) ## + #addPrimitiveFieldComparisonConditionDirect($field) ## #end #elseif ($field.enum) - #addPrimitiveFieldComparisonCondition($field) ## + #addPrimitiveFieldComparisonConditionDirect($field) ## #else com.google.common.base.Objects.equal($field.accessor, ${classInstanceName}.$field.accessor)## #end diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/objectsEquals.vm b/java/java-impl/src/com/intellij/codeInsight/generation/objectsEquals.vm index 17eb89f1d155..b3af467fc242 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/objectsEquals.vm +++ b/java/java-impl/src/com/intellij/codeInsight/generation/objectsEquals.vm @@ -15,12 +15,12 @@ Object $paramName){ #set($i = $i + 1) #if ($field.primitive) #if ($field.double || $field.float) - #addDoubleFieldComparisonCondition($field) ## + #addDoubleFieldComparisonConditionDirect($field) ## #else - #addPrimitiveFieldComparisonCondition($field) ## + #addPrimitiveFieldComparisonConditionDirect($field) ## #end #elseif ($field.enum) - #addPrimitiveFieldComparisonCondition($field) ## + #addPrimitiveFieldComparisonConditionDirect($field) ## #elseif ($field.array) java.util.Arrays.equals($field.accessor, ${classInstanceName}.$field.accessor)## #else diff --git a/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesSuperEqualsAndHashCodeGuava.java b/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesSuperEqualsAndHashCodeGuava.java index 701e5871c6b1..43324c1d773c 100644 --- a/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesSuperEqualsAndHashCodeGuava.java +++ b/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesSuperEqualsAndHashCodeGuava.java @@ -34,12 +34,12 @@ class A extends B { if (o == null || getClass() != o.getClass()) return false; if (!super.equals(o)) return false; final A a = (A) o; - return a7 != a.a7 && - a8 != a.a8 && - a9 != a.a9 && - a10 != a.a10 && - Float.compare(a.a11, a11) != 0 && - Double.compare(a.a12, a12) != 0 && + return a7 == a.a7 && + a8 == a.a8 && + a9 == a.a9 && + a10 == a.a10 && + Float.compare(a.a11, a11) == 0 && + Double.compare(a.a12, a12) == 0 && com.google.common.base.Objects.equal(a1, a.a1) && com.google.common.base.Objects.equal(a2, a.a2) && com.google.common.base.Objects.equal(a3, a.a3) &&