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:
Alexey Sedunov
2018-06-08 15:02:33 +03:00
parent c49eede054
commit 5f87e84966
4 changed files with 31 additions and 2 deletions
@@ -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>
}
@@ -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()
}