diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMembersHandler.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMembersHandler.kt index a0c46a6081e..79b849a6355 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMembersHandler.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMembersHandler.kt @@ -19,6 +19,8 @@ package org.jetbrains.kotlin.idea.core.overrideImplement import com.intellij.openapi.project.Project import com.intellij.util.SmartList import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import java.util.* public class OverrideMembersHandler : OverrideImplementMembersHandler() { @@ -30,6 +32,8 @@ public class OverrideMembersHandler : OverrideImplementMembersHandler() { val overridden = member.overriddenDescriptors if (overridden.any { it.modality == Modality.FINAL || Visibilities.isPrivate(it.visibility.normalize()) }) continue + if (DescriptorUtils.isInterface(descriptor) && overridden.any { descriptor.builtIns.isMemberOfAny(it) }) continue + class Data( val realSuper: CallableMemberDescriptor, val immediateSupers: MutableList = SmartList() diff --git a/idea/testData/codeInsight/overrideImplement/noAnyMembersInInterface.kt b/idea/testData/codeInsight/overrideImplement/noAnyMembersInInterface.kt new file mode 100644 index 00000000000..dc00de97d40 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/noAnyMembersInInterface.kt @@ -0,0 +1,3 @@ +interface I { + +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/noAnyMembersInInterface.kt.after b/idea/testData/codeInsight/overrideImplement/noAnyMembersInInterface.kt.after new file mode 100644 index 00000000000..dc00de97d40 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/noAnyMembersInInterface.kt.after @@ -0,0 +1,3 @@ +interface I { + +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt index 21e510be184..b58d5c52cf2 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt @@ -184,6 +184,10 @@ public class OverrideImplementTest : AbstractOverrideImplementTest() { doMultiOverrideFileTest() } + public fun testNoAnyMembersInInterface() { + doMultiOverrideFileTest() + } + public fun testLocalClass() { doImplementFileTest() }