diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt index 1cde67d73ff..d7fa2b5d17b 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/overrideImplement/OverrideMemberChooserObject.kt @@ -110,6 +110,10 @@ fun OverrideMemberChooserObject.generateMember(targetClass: KtClassOrObject, cop else -> error("Unknown member to override: $descriptor") } + if (!targetClass.hasModifier(KtTokens.IMPL_KEYWORD)) { + newMember.removeModifier(KtTokens.IMPL_KEYWORD) + } + if (copyDoc) { val superDeclaration = DescriptorToSourceUtilsIde.getAnyDeclaration(project, descriptor)?.navigationElement val kDoc = when (superDeclaration) { diff --git a/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/header/header.kt b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/header/header.kt new file mode 100644 index 00000000000..d6dd77a15d7 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/header/header.kt @@ -0,0 +1,3 @@ +header abstract class Bar { + abstract fun foo() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/header/header.kt.after b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/header/header.kt.after new file mode 100644 index 00000000000..d6dd77a15d7 --- /dev/null +++ b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/header/header.kt.after @@ -0,0 +1,3 @@ +header abstract class Bar { + abstract fun foo() +} \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/jvm/jvm.kt b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/jvm/jvm.kt new file mode 100644 index 00000000000..9a6df07bd9c --- /dev/null +++ b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/jvm/jvm.kt @@ -0,0 +1,8 @@ +// "Implement members" "true" +// DISABLE-ERRORS + +abstract impl class Bar { + abstract impl fun foo() +} + +class X : Bar() \ No newline at end of file diff --git a/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/jvm/jvm.kt.after b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/jvm/jvm.kt.after new file mode 100644 index 00000000000..2db750e3a3c --- /dev/null +++ b/idea/testData/multiModuleQuickFix/implementMembersInImplClassNonImplInheritor/jvm/jvm.kt.after @@ -0,0 +1,12 @@ +// "Implement members" "true" +// DISABLE-ERRORS + +abstract impl class Bar { + abstract impl fun foo() +} + +class X : Bar() { + override fun foo() { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt index edb6a6ba854..574d60b1aaa 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiModuleTest.kt @@ -156,4 +156,7 @@ class QuickFixMultiModuleTest : AbstractQuickFixMultiModuleTest() { @Test fun testImplementMembersInHeaderClass() = doMultiPlatformTest(impls = *arrayOf()) + + @Test + fun testImplementMembersInImplClassNonImplInheritor() = doMultiPlatformTest() } \ No newline at end of file