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:
+4
@@ -19,6 +19,8 @@ package org.jetbrains.kotlin.idea.core.overrideImplement
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.util.SmartList
|
import com.intellij.util.SmartList
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
public class OverrideMembersHandler : OverrideImplementMembersHandler() {
|
public class OverrideMembersHandler : OverrideImplementMembersHandler() {
|
||||||
@@ -30,6 +32,8 @@ public class OverrideMembersHandler : OverrideImplementMembersHandler() {
|
|||||||
val overridden = member.overriddenDescriptors
|
val overridden = member.overriddenDescriptors
|
||||||
if (overridden.any { it.modality == Modality.FINAL || Visibilities.isPrivate(it.visibility.normalize()) }) continue
|
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(
|
class Data(
|
||||||
val realSuper: CallableMemberDescriptor,
|
val realSuper: CallableMemberDescriptor,
|
||||||
val immediateSupers: MutableList<CallableMemberDescriptor> = SmartList()
|
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()
|
doMultiOverrideFileTest()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun testNoAnyMembersInInterface() {
|
||||||
|
doMultiOverrideFileTest()
|
||||||
|
}
|
||||||
|
|
||||||
public fun testLocalClass() {
|
public fun testLocalClass() {
|
||||||
doImplementFileTest()
|
doImplementFileTest()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user