Override/Implement: Do not insert super-call into extension body
Such super-calls are not are supported yet #KT-4311 Fixed
This commit is contained in:
+7
-2
@@ -102,9 +102,14 @@ interface OverrideMemberChooserObject : ClassMember {
|
|||||||
fun OverrideMemberChooserObject.generateMember(targetClass: KtClassOrObject, copyDoc: Boolean): KtCallableDeclaration {
|
fun OverrideMemberChooserObject.generateMember(targetClass: KtClassOrObject, copyDoc: Boolean): KtCallableDeclaration {
|
||||||
val project = targetClass.project
|
val project = targetClass.project
|
||||||
|
|
||||||
val bodyType = if (targetClass.hasExpectModifier()) OverrideMemberChooserObject.BodyType.NO_BODY else bodyType
|
|
||||||
|
|
||||||
val descriptor = immediateSuper
|
val descriptor = immediateSuper
|
||||||
|
|
||||||
|
val bodyType = when {
|
||||||
|
targetClass.hasExpectModifier() -> OverrideMemberChooserObject.BodyType.NO_BODY
|
||||||
|
descriptor.extensionReceiverParameter != null -> OverrideMemberChooserObject.BodyType.EMPTY
|
||||||
|
else -> bodyType
|
||||||
|
}
|
||||||
|
|
||||||
if (preferConstructorParameter && descriptor is PropertyDescriptor) return generateConstructorParameter(project, descriptor)
|
if (preferConstructorParameter && descriptor is PropertyDescriptor) return generateConstructorParameter(project, descriptor)
|
||||||
|
|
||||||
val newMember: KtCallableDeclaration = when (descriptor) {
|
val newMember: KtCallableDeclaration = when (descriptor) {
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
open class A {
|
||||||
|
open fun Int.foo(): Int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B: A() {
|
||||||
|
<caret>
|
||||||
|
}
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
open class A {
|
||||||
|
open fun Int.foo(): Int {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class B: A() {
|
||||||
|
override fun Int.foo(): Int {
|
||||||
|
<selection><caret>TODO("not implemented") //To change body of created functions use File | Settings | File Templates.</selection>
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -121,6 +121,10 @@ class OverrideImplementTest : AbstractOverrideImplementTest() {
|
|||||||
doOverrideFileTest()
|
doOverrideFileTest()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun testOverrideExtensionFunction() {
|
||||||
|
doOverrideFileTest()
|
||||||
|
}
|
||||||
|
|
||||||
fun testOverrideExtensionProperty() {
|
fun testOverrideExtensionProperty() {
|
||||||
doOverrideFileTest()
|
doOverrideFileTest()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user