diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java index 544838da81c2..887ac6ad0a13 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/OverrideImplementUtil.java @@ -342,7 +342,7 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil { for (PsiClassType type : targetClass.getSuperTypes()) { PsiClass superClass = type.resolve(); if (InheritanceUtil.isInheritorOrSelf(superClass, aClass, true)) { - return superClass; + return superClass.isInterface() ? superClass : null; } } } diff --git a/java/java-tests/testData/codeInsight/overrideImplement/afterExtensionMethods2.java b/java/java-tests/testData/codeInsight/overrideImplement/afterExtensionMethods2.java new file mode 100644 index 000000000000..7cbf048d9e08 --- /dev/null +++ b/java/java-tests/testData/codeInsight/overrideImplement/afterExtensionMethods2.java @@ -0,0 +1,14 @@ +interface A { + default void foo() {} +} + +interface B1 extends A {} + +class B implements A {} + +class C extends B implements B1 { + @Override + public void foo() { + super.foo(); + } +} diff --git a/java/java-tests/testData/codeInsight/overrideImplement/beforeExtensionMethods2.java b/java/java-tests/testData/codeInsight/overrideImplement/beforeExtensionMethods2.java new file mode 100644 index 000000000000..bf7c878c3beb --- /dev/null +++ b/java/java-tests/testData/codeInsight/overrideImplement/beforeExtensionMethods2.java @@ -0,0 +1,11 @@ +interface A { + default void foo() {} +} + +interface B1 extends A {} + +class B implements A {} + +class C extends B implements B1 { + +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy b/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy index c5c5b2566a77..00548e29978d 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/OverrideImplementTest.groovy @@ -53,6 +53,8 @@ class OverrideImplementTest extends LightJavaCodeInsightFixtureTestCase { void testExtensionMethods1() { doTest(true) } + void testExtensionMethods2() { doTest(true) } + void testSkipUnknownAnnotations() { doTest(true) } void testMultipleInheritedThrows() { doTest(false) }