From d536d50a3c666649ee4d9d300b067fc7e64f2e95 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 7 Feb 2018 14:56:49 +0100 Subject: [PATCH] generate equals: skip equals generated in the same class (IDEA-170746) --- .../generation/GenerateEqualsHelper.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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 bffe311c6787..a5112167758d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHelper.java @@ -226,8 +226,19 @@ public class GenerateEqualsHelper implements Runnable { LOG.assertTrue(myClass.isValid()); PsiMethod superEquals = MethodSignatureUtil.findMethodBySignature(myClass, methodSignature, true); if (superEquals == null) return true; + PsiClass containingClass = superEquals.getContainingClass(); + //implicit equals e.g. generated by lombok + if (containingClass == myClass) { + return Arrays.stream(superEquals.findSuperMethods()).anyMatch(superMethod -> { + PsiClass superClass = superMethod.getContainingClass(); + return !superMethod.hasModifierProperty(PsiModifier.ABSTRACT) && + superClass != null && + !CommonClassNames.JAVA_LANG_OBJECT.equals(superClass.getQualifiedName()); + }); + } if (superEquals.hasModifierProperty(PsiModifier.ABSTRACT)) return false; - return !CommonClassNames.JAVA_LANG_OBJECT.equals(superEquals.getContainingClass().getQualifiedName()); + if (containingClass == null) return false; + return !CommonClassNames.JAVA_LANG_OBJECT.equals(containingClass.getQualifiedName()); } private PsiMethod createHashCode() throws IncorrectOperationException {