diff --git a/Changelog.md b/Changelog.md index 5fc49b1083f..e6d03d890e5 100644 --- a/Changelog.md +++ b/Changelog.md @@ -33,6 +33,7 @@ - Add kotlinClassName() and kotlinFunctionName() macros for use in live templates - Complete private members from libraries in Evaluate Expression dialog - Show error message when debug info for some local variable is corrupted +- [KT-11638](https://youtrack.jetbrains.com/issue/KT-11638) Fixed hashCode() implementation in "Generate equals/hashCode" action ## 1.0.1-2 diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt index a91ae7e49a5..60edc0be578 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt @@ -221,7 +221,7 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase) { override fun hashCode(): Int{ var result = Arrays.hashCode(n) - result += 31 * result + Arrays.hashCode(s) - result += 31 * result + f.hashCode() + result = 31 * result + Arrays.hashCode(s) + result = 31 * result + f.hashCode() return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVars.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVars.kt.after index ae50339c5d1..36e75ab4ec6 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVars.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVars.kt.after @@ -20,8 +20,8 @@ class A(val n: Int, val s: String) { override fun hashCode(): Int{ var result = n - result += 31 * result + s.hashCode() - result += 31 * result + f.hashCode() + result = 31 * result + s.hashCode() + result = 31 * result + f.hashCode() return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsNullable.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsNullable.kt.after index 32f1d9b67d1..dc5e0f1a7e5 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsNullable.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsNullable.kt.after @@ -20,8 +20,8 @@ class A(val n: Int?, val s: String) { override fun hashCode(): Int{ var result = n ?: 0 - result += 31 * result + s.hashCode() - result += 31 * result + (f?.hashCode() ?: 0) + result = 31 * result + s.hashCode() + result = 31 * result + (f?.hashCode() ?: 0) return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsWithSuperClass.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsWithSuperClass.kt.after index e409bb30dc8..9d793886423 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsWithSuperClass.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/multipleVarsWithSuperClass.kt.after @@ -26,9 +26,9 @@ class A(val n: Int, val s: String) : X() { override fun hashCode(): Int{ var result = super.hashCode() - result += 31 * result + n - result += 31 * result + s.hashCode() - result += 31 * result + f.hashCode() + result = 31 * result + n + result = 31 * result + s.hashCode() + result = 31 * result + f.hashCode() return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/nameClash.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/nameClash.kt.after index 0520eb4d71b..0c0263d67d4 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/nameClash.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/nameClash.kt.after @@ -17,7 +17,7 @@ class A(val result: Int, val s: String) { override fun hashCode(): Int{ var result1 = result - result1 += 31 * result1 + s.hashCode() + result1 = 31 * result1 + s.hashCode() return result1 } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/nullableArrays.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/nullableArrays.kt.after index 69c4aa14f20..94897f0ec00 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/nullableArrays.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/nullableArrays.kt.after @@ -22,8 +22,8 @@ class A(val n: IntArray?, val s: Array?) { override fun hashCode(): Int{ var result = n?.let { Arrays.hashCode(it) } ?: 0 - result += 31 * result + (s?.let { Arrays.hashCode(it) } ?: 0) - result += 31 * result + f.hashCode() + result = 31 * result + (s?.let { Arrays.hashCode(it) } ?: 0) + result = 31 * result + f.hashCode() return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithJavaSuperClass.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithJavaSuperClass.kt.after index 6f530d7417e..4cf6708665e 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithJavaSuperClass.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithJavaSuperClass.kt.after @@ -17,7 +17,7 @@ class A(val n: Int) : X() { override fun hashCode(): Int{ var result = super.hashCode() - result += 31 * result + n + result = 31 * result + n return result } } \ No newline at end of file diff --git a/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithSuperClass.kt.after b/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithSuperClass.kt.after index 0ec827ce992..4d7a1bb5140 100644 --- a/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithSuperClass.kt.after +++ b/idea/testData/codeInsight/generate/equalsWithHashCode/singleVarWithSuperClass.kt.after @@ -22,7 +22,7 @@ class A(val n: Int) : X() { override fun hashCode(): Int{ var result = super.hashCode() - result += 31 * result + n + result = 31 * result + n return result } } \ No newline at end of file