From bdf502edef9c43c018d895ad2747991969d65655 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Sat, 7 Sep 2019 10:40:30 +0900 Subject: [PATCH] Override/Implement members: don't add 'external' modifier #KT-33466 Fixed --- .../src/org/jetbrains/kotlin/idea/core/generateUtil.kt | 2 ++ .../overrideImplement/overrideExternalFunction.kt | 7 +++++++ .../overrideImplement/overrideExternalFunction.kt.after | 9 +++++++++ .../kotlin/idea/codeInsight/OverrideImplementTest.kt | 4 ++++ 4 files changed, 22 insertions(+) create mode 100644 idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt create mode 100644 idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt.after diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/generateUtil.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/generateUtil.kt index 4b3a5c12076..fc513c5cc02 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/generateUtil.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/generateUtil.kt @@ -248,6 +248,8 @@ fun insertMembersAfter( } } + it.removeModifier(KtTokens.EXTERNAL_KEYWORD) + @Suppress("UNCHECKED_CAST") SmartPointerManager.createPointer((body.addAfter(it, afterAnchor) as T).apply { afterAnchor = this }) } diff --git a/idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt b/idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt new file mode 100644 index 00000000000..a1f2c6b4186 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt @@ -0,0 +1,7 @@ +open class A { + open external fun foo() +} + +class B : A() { + +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt.after b/idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt.after new file mode 100644 index 00000000000..f25de1b02d5 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/overrideExternalFunction.kt.after @@ -0,0 +1,9 @@ +open class A { + open external fun foo() +} + +class B : A() { + override fun foo() { + super.foo() + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt index 72719da9af6..fdd0bf2a485 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/OverrideImplementTest.kt @@ -334,4 +334,8 @@ class OverrideImplementTest : AbstractOverrideImplementTest() { fun testEnumClass4() { doOverrideFileTest("toString") } + + fun testOverrideExternalFunction() { + doOverrideFileTest() + } }