From 42cef6c89d3dc8385c4aa3e44e2a3358d44ae815 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 6 Sep 2024 11:52:01 +0200 Subject: [PATCH] [kotlin] k2: take care about java fake overrides - don't suggest implementing already implemented method ^KTIJ-31225 fixed GitOrigin-RevId: 5a7224e633f6767e4170a9519fcf89eb1ddf9823 --- .../fixes/HighLevelQuickFixTestGenerated.java | 5 +++++ .../KtImplementMembersHandler.kt | 2 +- .../quickfix/K1QuickFixTestGenerated.java | 5 +++++ .../implement/fakeOverride.k2.kt.after | 19 +++++++++++++++++++ .../quickfix/implement/fakeOverride.kt | 7 +++++++ .../quickfix/implement/fakeOverride.kt.after | 19 +++++++++++++++++++ 6 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.k2.kt.after create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt create mode 100644 plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt.after diff --git a/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java b/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java index a9d5b2eaa960..809fe4d39972 100644 --- a/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java +++ b/plugins/kotlin/code-insight/fixes-k2/tests/test/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/HighLevelQuickFixTestGenerated.java @@ -8960,6 +8960,11 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu runTest("../../../idea/tests/testData/quickfix/implement/enum.kt"); } + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("../../../idea/tests/testData/quickfix/implement/fakeOverride.kt"); + } + @TestMetadata("finalClass.kt") public void testFinalClass() throws Exception { runTest("../../../idea/tests/testData/quickfix/implement/finalClass.kt"); diff --git a/plugins/kotlin/code-insight/override-implement-k2/src/org/jetbrains/kotlin/idea/core/overrideImplement/KtImplementMembersHandler.kt b/plugins/kotlin/code-insight/override-implement-k2/src/org/jetbrains/kotlin/idea/core/overrideImplement/KtImplementMembersHandler.kt index 672032f84de5..308b794b2a46 100644 --- a/plugins/kotlin/code-insight/override-implement-k2/src/org/jetbrains/kotlin/idea/core/overrideImplement/KtImplementMembersHandler.kt +++ b/plugins/kotlin/code-insight/override-implement-k2/src/org/jetbrains/kotlin/idea/core/overrideImplement/KtImplementMembersHandler.kt @@ -67,7 +67,7 @@ open class KtImplementMembersHandler : KtGenerateMembersHandler(true) { } if (abstractSymbols.isNotEmpty()) { addAll(abstractSymbols) - } else { + } else if (intersectionOverriddenSymbols.size > 1) { // This for the [MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED] and [MANY_IMPL_MEMBER_NOT_IMPLEMENTED] compiler errors. addAll(intersectionOverriddenSymbols) } diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java index 7a0960728140..3a8ad88dd383 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/quickfix/K1QuickFixTestGenerated.java @@ -9747,6 +9747,11 @@ public abstract class K1QuickFixTestGenerated extends AbstractK1QuickFixTest { runTest("testData/quickfix/implement/enum.kt"); } + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("testData/quickfix/implement/fakeOverride.kt"); + } + @TestMetadata("finalClass.kt") public void testFinalClass() throws Exception { runTest("testData/quickfix/implement/finalClass.kt"); diff --git a/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.k2.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.k2.kt.after new file mode 100644 index 000000000000..8829cbc24b46 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.k2.kt.after @@ -0,0 +1,19 @@ +// "Implement members" "true" +// WITH_STDLIB + +class C : java.io.Writer(), java.lang.Appendable { + override fun write(p0: CharArray, p1: Int, p2: Int) { + TODO("Not yet implemented") + } + + override fun flush() { + TODO("Not yet implemented") + } + + override fun close() { + TODO("Not yet implemented") + } +} + +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.core.overrideImplement.KtImplementMembersQuickfix diff --git a/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt b/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt new file mode 100644 index 000000000000..aa40315c5b33 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt @@ -0,0 +1,7 @@ +// "Implement members" "true" +// WITH_STDLIB + +class C : java.io.Writer(), java.lang.Appendable + +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.core.overrideImplement.KtImplementMembersQuickfix diff --git a/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt.after new file mode 100644 index 000000000000..77dac7696d6f --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/quickfix/implement/fakeOverride.kt.after @@ -0,0 +1,19 @@ +// "Implement members" "true" +// WITH_STDLIB + +class C : java.io.Writer(), java.lang.Appendable { + override fun close() { + TODO("Not yet implemented") + } + + override fun flush() { + TODO("Not yet implemented") + } + + override fun write(p0: CharArray, p1: Int, p2: Int) { + TODO("Not yet implemented") + } +} + +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.core.overrideImplement.KtImplementMembersQuickfix