KotlinCommonIntentionActionsFactory is able to remove constructors parameters (EA-104621) (#1187)

This commit is contained in:
xiexed
2017-07-18 16:44:22 +03:00
committed by Nikolay Krasko
parent 4e868c5232
commit f94569c995
2 changed files with 26 additions and 6 deletions
@@ -16,7 +16,10 @@
package org.jetbrains.kotlin.idea.intentions 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.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement
import com.intellij.openapi.editor.Editor import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
@@ -217,11 +220,14 @@ class KotlinCommonIntentionActionsFactory : JvmCommonIntentionActionsFactory() {
} }
private fun fakeParametersExpressions(parameters: List<PsiParameter>): Array<PsiExpression> = private fun fakeParametersExpressions(parameters: List<PsiParameter>): Array<PsiExpression> =
JavaPsiFacade.getElementFactory(parameters.first().project) when {
.createParameterList( parameters.isEmpty() -> emptyArray<PsiExpression>()
parameters.map { it.name }.toTypedArray(), else -> JavaPsiFacade.getElementFactory(parameters.first().project)
parameters.map { it.type }.toTypedArray() .createParameterList(
).parameters.map { FakeExpressionFromParameter(it) }.toTypedArray() parameters.map { it.name }.toTypedArray(),
parameters.map { it.type }.toTypedArray()
).parameters.map { FakeExpressionFromParameter(it) }.toTypedArray()
}
private class FakeExpressionFromParameter(private val psiParam: PsiParameter) : PsiReferenceExpressionImpl() { private class FakeExpressionFromParameter(private val psiParam: PsiParameter) : PsiReferenceExpressionImpl() {
@@ -168,6 +168,20 @@ class CommonIntentionActionsTest : LightPlatformCodeInsightFixtureTestCase() {
""".trim().trimMargin(), true) """.trim().trimMargin(), true)
} }
fun testRemoveConstructorParameters() {
myFixture.configureByText("foo.kt", """
|class <caret>Foo(i: Int) {
|}
""".trim().trimMargin())
myFixture.launchAction(codeModifications.createAddCallableMemberActions(MethodInsertionInfo.constructorInfo(
atCaret<UClass>(myFixture), makeParams())).findWithText("Remove 1st parameter from method 'Foo'"))
myFixture.checkResult("""
|class Foo() {
|}
""".trim().trimMargin(), true)
}
fun testAddStringVarProperty() { fun testAddStringVarProperty() {
myFixture.configureByText("foo.kt", """ myFixture.configureByText("foo.kt", """
|class Foo<caret> { |class Foo<caret> {