Don't propose to generate Any methods in interface to avoid METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE error (KT-9796)

#KT-9796 Fixed
This commit is contained in:
Nikolay Krasko
2015-10-28 15:32:26 +03:00
parent 625907e49d
commit 8bef335b71
4 changed files with 14 additions and 0 deletions
@@ -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<CallableMemberDescriptor> = SmartList()
@@ -0,0 +1,3 @@
interface I {
<caret>
}
@@ -0,0 +1,3 @@
interface I {
<caret>
}
@@ -184,6 +184,10 @@ public class OverrideImplementTest : AbstractOverrideImplementTest() {
doMultiOverrideFileTest()
}
public fun testNoAnyMembersInInterface() {
doMultiOverrideFileTest()
}
public fun testLocalClass() {
doImplementFileTest()
}