diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/KotlinK2QuickFixRegistrar.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/KotlinK2QuickFixRegistrar.kt index c92e316f439b..d418e3402f64 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/KotlinK2QuickFixRegistrar.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/KotlinK2QuickFixRegistrar.kt @@ -107,6 +107,7 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() { registerFactory(ConvertLateinitPropertyToNotNullDelegateFixFactory.convertLateinitPropertyToNotNullDelegateFixFactory) registerFactory(AddReifiedToTypeParameterOfFunctionFixFactory.addReifiedToTypeParameterOfFunctionFixFactory) registerFactory(ChangeObjectToClassFixFactory.changeObjectToClassFixFactory) + registerFactory(RemoveDefaultParameterValueFixFactory.removeDefaultParameterValueFixFactory) } private val addAbstract = KtQuickFixesListBuilder.registerPsiQuickFix { diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/RemoveDefaultParameterValueFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/RemoveDefaultParameterValueFixFactory.kt new file mode 100644 index 000000000000..47ae7fe597c8 --- /dev/null +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/RemoveDefaultParameterValueFixFactory.kt @@ -0,0 +1,16 @@ +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.kotlin.idea.k2.codeinsight.fixes + +import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic +import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory +import org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +import org.jetbrains.kotlin.psi.KtParameter + +internal object RemoveDefaultParameterValueFixFactory { + + val removeDefaultParameterValueFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.DefaultValueNotAllowedInOverride -> + (diagnostic.psi.parent as? KtParameter) + ?.let { RemoveDefaultParameterValueFix(it) } + ?.let(::listOf) ?: emptyList() + } +} 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 e3e74d03c615..15e11e6a289e 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 @@ -6121,7 +6121,34 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu + @RunWith(JUnit3RunnerWithInners.class) + @TestMetadata("../../../idea/tests/testData/quickfix/removeDefaultParameterValue") + public static class RemoveDefaultParameterValue extends AbstractHighLevelQuickFixTest { + @java.lang.Override + @org.jetbrains.annotations.NotNull + public final KotlinPluginMode getPluginMode() { + return KotlinPluginMode.K2; + } + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, this, testDataFilePath); + } + + @TestMetadata("actualFunctionWithDefaultArguments.kt") + public void testActualFunctionWithDefaultArguments() throws Exception { + runTest("../../../idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt"); + } + + @TestMetadata("defaultValueNotAllowedInOverride.kt") + public void testDefaultValueNotAllowedInOverride() throws Exception { + runTest("../../../idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt"); + } + + @TestMetadata("hasComment.kt") + public void testHasComment() throws Exception { + runTest("../../../idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt"); + } + } diff --git a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt index f958070dba87..4af341944547 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt @@ -11,4 +11,5 @@ expect class Bar : Foo { actual class Bar : Foo { actual override fun test(x: Int, y: Int = 1) {} } -// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt.after index 582c0263e6c9..fcf4ecef7611 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/actualFunctionWithDefaultArguments.kt.after @@ -11,4 +11,5 @@ expect class Bar : Foo { actual class Bar : Foo { actual override fun test(x: Int, y: Int) {} } -// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt index 845fd109c1cf..5bafb30f4fa0 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt @@ -6,4 +6,5 @@ open class A { class B : A() { override fun foo(x : Int = 1, y: Int) {} } -// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt.after index 92b989a24427..d9b20e3b7657 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/defaultValueNotAllowedInOverride.kt.after @@ -6,4 +6,5 @@ open class A { class B : A() { override fun foo(x : Int, y: Int) {} } -// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt index 372ce577df32..5fa7d8cbc01e 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt @@ -6,4 +6,5 @@ open class A { class B : A() { override fun foo(x : Int /* comment1 */ = /* comment2 */ 1, y: Int) {} } -// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt.after index a6cc5ff6b95e..eef0a630b7a5 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/removeDefaultParameterValue/hasComment.kt.after @@ -6,4 +6,5 @@ open class A { class B : A() { override fun foo(x : Int /* comment1 */ /* comment2 */, y: Int) {} } -// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file +// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix +// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.RemoveDefaultParameterValueFix \ No newline at end of file diff --git a/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2QuickFixTests.kt b/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2QuickFixTests.kt index b5821345a731..2772f4ec640d 100644 --- a/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2QuickFixTests.kt +++ b/plugins/kotlin/util/test-generator-fir/test/org/jetbrains/kotlin/fir/testGenerator/codeinsight/GenerateK2QuickFixTests.kt @@ -161,7 +161,7 @@ internal fun MutableTWorkspace.generateK2FixTests() { model("$idea/quickfix/removeAnnotation", pattern = pattern, isIgnored = true) model("$idea/quickfix/removeArgument", pattern = pattern) model("$idea/quickfix/removeAtFromAnnotationArgument", pattern = pattern, isIgnored = true) - model("$idea/quickfix/removeDefaultParameterValue", pattern = pattern, isIgnored = true) + model("$idea/quickfix/removeDefaultParameterValue", pattern = pattern) model("$idea/quickfix/removeFinalUpperBound", pattern = pattern, isIgnored = true) model("$idea/quickfix/removeNoConstructor", pattern = pattern) model("$idea/quickfix/removeRedundantAssignment", pattern = pattern, isIgnored = true)