diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java index 242cac2e1489..376238573e6b 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java @@ -394,6 +394,7 @@ public class GenerateEqualsHelper implements Runnable { buffer.append("return 0;\n}"); } PsiMethod hashCode = myFactory.createMethodFromText(buffer.toString(), null); + hashCode = (PsiMethod)myJavaCodeStyleManager.shortenClassReferences(hashCode); return (PsiMethod)myCodeStyleManager.reformat(hashCode); } @@ -471,7 +472,7 @@ public class GenerateEqualsHelper implements Runnable { private static void adjustHashCodeToArrays(@NonNls StringBuilder buffer, final PsiField field, final String name) { if (field.getType() instanceof PsiArrayType && hasArraysHashCode(field)) { - buffer.append("Arrays.hashCode("); + buffer.append("java.util.Arrays.hashCode("); buffer.append(name); buffer.append(")"); } diff --git a/java/java-tests/testData/codeInsight/generateEquals/afterArraysClass.java b/java/java-tests/testData/codeInsight/generateEquals/afterArraysClass.java new file mode 100644 index 000000000000..7a5ff00fd37f --- /dev/null +++ b/java/java-tests/testData/codeInsight/generateEquals/afterArraysClass.java @@ -0,0 +1,20 @@ +class Arrays { + int[] i; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + final Arrays arrays = (Arrays) o; + + if (!java.util.Arrays.equals(i, arrays.i)) return false; + + return true; + } + + @Override + public int hashCode() { + return i != null ? i.hashCode() : 0; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/generateEquals/beforeArraysClass.java b/java/java-tests/testData/codeInsight/generateEquals/beforeArraysClass.java new file mode 100644 index 000000000000..6e8a0cc18683 --- /dev/null +++ b/java/java-tests/testData/codeInsight/generateEquals/beforeArraysClass.java @@ -0,0 +1,3 @@ +class Arrays { + int[] i; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/GenerateEqualsTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/GenerateEqualsTest.java index 3dcaccc5b4a1..60fbd7428679 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/GenerateEqualsTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/GenerateEqualsTest.java @@ -63,6 +63,10 @@ public class GenerateEqualsTest extends GenerateEqualsTestCase { doTest(new int[]{0}, new int[]{0}, new int[0], true); } + public void testArraysClass() throws Exception { + doTest(new int[]{0}, new int[]{0}, new int[0], true); + } + @Override protected Sdk getProjectJDK() { return IdeaTestUtil.getMockJdk14();