diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java index 95a4eca5463a..25402c9020f7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/analysis/GenericsHighlightUtil.java @@ -372,6 +372,7 @@ public class GenericsHighlightUtil { } } + @Nullable public static HighlightInfo checkElementInTypeParameterExtendsList(PsiReferenceList referenceList, JavaResolveResult resolveResult, PsiElement element) { PsiClass aClass = (PsiClass)referenceList.getParent(); final PsiJavaCodeReferenceElement[] referenceElements = referenceList.getReferenceElements(); @@ -393,6 +394,11 @@ public class GenericsHighlightUtil { IntentionAction fix = QUICK_FIX_FACTORY.createExtendsListFix(aClass, type, false); QuickFixAction.registerQuickFixAction(errorResult, fix, null); } + if (errorResult == null && JavaVersionService.getInstance().isAtLeast(referenceList, JavaSdkVersion.JDK_1_7) && + referenceElements.length > 1) { + //todo suppress erased methods which come from the same class + return checkOverrideEquivalentMethods(aClass); + } return errorResult; } public static HighlightInfo checkInterfaceMultipleInheritance(PsiClass aClass) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends1/pck/AmbiguousMethodCall.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends1/pck/AmbiguousMethodCall.java index 92c2135a7247..8cfbc7d3a466 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends1/pck/AmbiguousMethodCall.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends1/pck/AmbiguousMethodCall.java @@ -9,7 +9,7 @@ interface IB{ void foo(A x); } class C { - void bar(T x, A y){ + <T extends IA & IB> void bar(T x, A y){ x.foo(y); } } \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends2/pck/AmbiguousMethodCall.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends2/pck/AmbiguousMethodCall.java index ed65deaea70d..c8c3ba18c7da 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends2/pck/AmbiguousMethodCall.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/ambiguousMultipleTypeParamExtends2/pck/AmbiguousMethodCall.java @@ -9,7 +9,7 @@ interface IB{ void foo(A> x); } class C { - void bar(T x, A> y){ + <T extends IB & IA> void bar(T x, A> y){ x.foo(y); } } \ No newline at end of file