diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java index f691f50a9ad3..bf138c8433cd 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java @@ -920,9 +920,12 @@ public class GenericsHighlightUtil { } try { MethodSignatureBackedByPsiMethod superMethod = SuperMethodsSearch.search(method, null, true, false).findFirst(); - if (superMethod != null && method.getContainingClass().isInterface() && "clone".equals(superMethod.getName())) { - final PsiClass containingClass = superMethod.getMethod().getContainingClass(); - if (containingClass != null && CommonClassNames.JAVA_LANG_OBJECT.equals(containingClass.getQualifiedName())) { + if (superMethod != null && method.getContainingClass().isInterface()) { + final PsiMethod psiMethod = superMethod.getMethod(); + final PsiClass containingClass = psiMethod.getContainingClass(); + if (containingClass != null && + CommonClassNames.JAVA_LANG_OBJECT.equals(containingClass.getQualifiedName()) && + psiMethod.hasModifierProperty(PsiModifier.PROTECTED)) { superMethod = null; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/IDEADEV11877.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/IDEADEV11877.java index 39773bd7e428..2d44f189d2e0 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/IDEADEV11877.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting6/IDEADEV11877.java @@ -16,4 +16,9 @@ class MyCloneable2 { public Object clone() { return null; } +} + +interface MyFinalizable { + @Override void finalize(); + @Override int hashCode(); } \ No newline at end of file