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 {
|
||||
val project = targetClass.project
|
||||
|
||||
val bodyType = if (targetClass.hasExpectModifier()) OverrideMemberChooserObject.BodyType.NO_BODY else bodyType
|
||||
|
||||
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)
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
fun testOverrideExtensionFunction() {
|
||||
doOverrideFileTest()
|
||||
}
|
||||
|
||||
fun testOverrideExtensionProperty() {
|
||||
doOverrideFileTest()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user