From f94569c995bf86eddfb40141cac7f190b324fe34 Mon Sep 17 00:00:00 2001 From: xiexed Date: Tue, 18 Jul 2017 16:44:22 +0300 Subject: [PATCH] `KotlinCommonIntentionActionsFactory` is able to remove constructors parameters (EA-104621) (#1187) --- .../KotlinCommonIntentionActionsFactory.kt | 18 ++++++++++++------ .../quickfix/CommonIntentionActionsTest.kt | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/KotlinCommonIntentionActionsFactory.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/KotlinCommonIntentionActionsFactory.kt index 496631b2d8c..6e043e9bb23 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/KotlinCommonIntentionActionsFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/KotlinCommonIntentionActionsFactory.kt @@ -16,7 +16,10 @@ package org.jetbrains.kotlin.idea.intentions -import com.intellij.codeInsight.intention.* +import com.intellij.codeInsight.intention.IntentionAction +import com.intellij.codeInsight.intention.JvmCommonIntentionActionsFactory +import com.intellij.codeInsight.intention.MethodInsertionInfo +import com.intellij.codeInsight.intention.QuickFixFactory import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project @@ -217,11 +220,14 @@ class KotlinCommonIntentionActionsFactory : JvmCommonIntentionActionsFactory() { } private fun fakeParametersExpressions(parameters: List): Array = - JavaPsiFacade.getElementFactory(parameters.first().project) - .createParameterList( - parameters.map { it.name }.toTypedArray(), - parameters.map { it.type }.toTypedArray() - ).parameters.map { FakeExpressionFromParameter(it) }.toTypedArray() + when { + parameters.isEmpty() -> emptyArray() + else -> JavaPsiFacade.getElementFactory(parameters.first().project) + .createParameterList( + parameters.map { it.name }.toTypedArray(), + parameters.map { it.type }.toTypedArray() + ).parameters.map { FakeExpressionFromParameter(it) }.toTypedArray() + } private class FakeExpressionFromParameter(private val psiParam: PsiParameter) : PsiReferenceExpressionImpl() { diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsTest.kt index efa8a93330f..14a0e0c2aa9 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsTest.kt @@ -168,6 +168,20 @@ class CommonIntentionActionsTest : LightPlatformCodeInsightFixtureTestCase() { """.trim().trimMargin(), true) } + fun testRemoveConstructorParameters() { + myFixture.configureByText("foo.kt", """ + |class Foo(i: Int) { + |} + """.trim().trimMargin()) + + myFixture.launchAction(codeModifications.createAddCallableMemberActions(MethodInsertionInfo.constructorInfo( + atCaret(myFixture), makeParams())).findWithText("Remove 1st parameter from method 'Foo'")) + myFixture.checkResult(""" + |class Foo() { + |} + """.trim().trimMargin(), true) + } + fun testAddStringVarProperty() { myFixture.configureByText("foo.kt", """ |class Foo {