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 {