diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java index c36dcd195ac9..0ea7cb4839b1 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightMethodUtil.java @@ -168,10 +168,12 @@ public class HighlightMethodUtil { @NotNull TextRange range, @NotNull LanguageLevel languageLevel) { if (superReturnType == null) return null; - if ("clone".equals(method.getName())) { + final PsiClass superContainingClass = superMethod.getContainingClass(); + if (superContainingClass != null && + CommonClassNames.JAVA_LANG_OBJECT.equals(superContainingClass.getQualifiedName()) && + !superMethod.hasModifierProperty(PsiModifier.PUBLIC)) { final PsiClass containingClass = method.getContainingClass(); - final PsiClass superContainingClass = superMethod.getContainingClass(); - if (containingClass != null && superContainingClass != null && containingClass.isInterface() && !superContainingClass.isInterface()) { + if (containingClass != null && containingClass.isInterface() && !superContainingClass.isInterface()) { return null; } } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IgnoreReturnTypeClashForObjectProtectedMethodsAndInterfaceMethodsWithSameSignature.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IgnoreReturnTypeClashForObjectProtectedMethodsAndInterfaceMethodsWithSameSignature.java new file mode 100644 index 000000000000..ac9ae37c244e --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IgnoreReturnTypeClashForObjectProtectedMethodsAndInterfaceMethodsWithSameSignature.java @@ -0,0 +1,4 @@ + +interface I { + String finalize(); +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java index d7a6f39eb842..b8944b7ded5a 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/GenericsHighlightingTest.java @@ -559,6 +559,10 @@ public class GenericsHighlightingTest extends LightDaemonAnalyzerTestCase { doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); } + public void testIgnoreReturnTypeClashForObjectProtectedMethodsAndInterfaceMethodsWithSameSignature() throws Exception { + doTest(LanguageLevel.JDK_1_7, JavaSdkVersion.JDK_1_7, false); + } + public void testLeastUpperBoundWithRecursiveTypes() throws Exception { final PsiManager manager = getPsiManager(); final GlobalSearchScope scope = GlobalSearchScope.allScope(getProject());