From 1b70e296eb13a1109a8560347f6a4e7acf9151eb Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 4 Sep 2015 17:10:39 +0300 Subject: [PATCH] simplified hashCode for nullable arrays (IDEA-144775) --- .../codeInsight/generation/defaultHashCode.vm | 1 + .../generateEquals/afterArraysFromJava15.java | 6 +++--- .../generateEquals/afterDifferentTypes.java | 12 ++++++------ .../generateEquals/afterDifferentTypesGetters.java | 12 ++++++------ 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/defaultHashCode.vm b/java/java-impl/src/com/intellij/codeInsight/generation/defaultHashCode.vm index a37759ce7bd8..6ea3abe05569 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/defaultHashCode.vm +++ b/java/java-impl/src/com/intellij/codeInsight/generation/defaultHashCode.vm @@ -121,6 +121,7 @@ public int hashCode() { #macro(addFieldHashCode $field $brace) #set($name = $field.accessor) #if ($field.notNull)#adjustHashCodeToArrays($field) +#elseif ($field.array && $java_version > 4)#adjustHashCodeToArrays($field) #else #if ($brace)(## #end diff --git a/java/java-tests/testData/codeInsight/generateEquals/afterArraysFromJava15.java b/java/java-tests/testData/codeInsight/generateEquals/afterArraysFromJava15.java index dca0073b3c7b..28b8d4f503c8 100644 --- a/java/java-tests/testData/codeInsight/generateEquals/afterArraysFromJava15.java +++ b/java/java-tests/testData/codeInsight/generateEquals/afterArraysFromJava15.java @@ -20,9 +20,9 @@ class Test { } public int hashCode() { - int result = myOs != null ? Arrays.hashCode(myOs) : 0; - result = 31 * result + (myIIs != null ? Arrays.deepHashCode(myIIs) : 0); - result = 31 * result + (myIs != null ? Arrays.hashCode(myIs) : 0); + int result = Arrays.hashCode(myOs); + result = 31 * result + Arrays.deepHashCode(myIIs); + result = 31 * result + Arrays.hashCode(myIs); return result; } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypes.java b/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypes.java index b81281d9e49b..9795106a5720 100644 --- a/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypes.java +++ b/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypes.java @@ -50,12 +50,12 @@ class A { public int hashCode() { int result; long temp; - result = a1 != null ? Arrays.hashCode(a1) : 0; - result = 31 * result + (a2 != null ? Arrays.deepHashCode(a2) : 0); - result = 31 * result + (a3 != null ? Arrays.hashCode(a3) : 0); - result = 31 * result + (a4 != null ? Arrays.deepHashCode(a4) : 0); - result = 31 * result + (a5 != null ? Arrays.hashCode(a5) : 0); - result = 31 * result + (a6 != null ? Arrays.deepHashCode(a6) : 0); + result = Arrays.hashCode(a1); + result = 31 * result + Arrays.deepHashCode(a2); + result = 31 * result + Arrays.hashCode(a3); + result = 31 * result + Arrays.deepHashCode(a4); + result = 31 * result + Arrays.hashCode(a5); + result = 31 * result + Arrays.deepHashCode(a6); result = 31 * result + (int) a7; result = 31 * result + (int) a8; result = 31 * result + a9; diff --git a/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesGetters.java b/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesGetters.java index 69bf70d1ec08..569f1c84f89c 100644 --- a/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesGetters.java +++ b/java/java-tests/testData/codeInsight/generateEquals/afterDifferentTypesGetters.java @@ -98,12 +98,12 @@ class A { public int hashCode() { int result; long temp; - result = getA1() != null ? Arrays.hashCode(getA1()) : 0; - result = 31 * result + (getA2() != null ? Arrays.deepHashCode(getA2()) : 0); - result = 31 * result + (getA3() != null ? Arrays.hashCode(getA3()) : 0); - result = 31 * result + (getA4() != null ? Arrays.deepHashCode(getA4()) : 0); - result = 31 * result + (getA5() != null ? Arrays.hashCode(getA5()) : 0); - result = 31 * result + (getA6() != null ? Arrays.deepHashCode(getA6()) : 0); + result = Arrays.hashCode(getA1()); + result = 31 * result + Arrays.deepHashCode(getA2()); + result = 31 * result + Arrays.hashCode(getA3()); + result = 31 * result + Arrays.deepHashCode(getA4()); + result = 31 * result + Arrays.hashCode(getA5()); + result = 31 * result + Arrays.deepHashCode(getA6()); result = 31 * result + (int) getA7(); result = 31 * result + (int) getA8(); result = 31 * result + getA9();