Migration to expect/actual: KotlinSafeDeleteProcessor

This commit is contained in:
Mikhail Glukhikh
2017-09-15 12:36:46 +03:00
parent 6e41bbc2a7
commit 19b8ecab61
3 changed files with 10 additions and 10 deletions
@@ -64,10 +64,10 @@ import java.util.*
class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
companion object {
@set:TestOnly
internal var Project.ALLOW_LIFTING_IMPL_PARAMETER_TO_HEADER
by NotNullableUserDataProperty(Key.create("ALLOW_LIFTING_IMPL_PARAMETER_TO_HEADER"), true)
internal var Project.ALLOW_LIFTING_ACTUAL_PARAMETER_TO_EXPECTED
by NotNullableUserDataProperty(Key.create("ALLOW_LIFTING_ACTUAL_PARAMETER_TO_EXPECTED"), true)
private var KtDeclaration.dropImplModifier: Boolean? by UserDataProperty(Key.create("DROP_IMPL_MODIFIER"))
private var KtDeclaration.dropActualModifier: Boolean? by UserDataProperty(Key.create("DROP_ACTUAL_MODIFIER"))
}
override fun handlesElement(element: PsiElement): Boolean = element.canDeleteElement()
@@ -391,10 +391,10 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
is KtParameter -> {
element.ownerFunction?.let {
if (it.dropImplModifier == true) {
if (it.dropActualModifier == true) {
it.removeModifier(KtTokens.IMPL_KEYWORD)
it.removeModifier(KtTokens.ACTUAL_KEYWORD)
it.dropImplModifier = null
it.dropActualModifier = null
}
}
(element.parent as KtParameterList).removeParameter(element)
@@ -403,7 +403,7 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
}
private fun shouldAllowPropagationToExpected(parameter: KtParameter): Boolean {
if (ApplicationManager.getApplication().isUnitTestMode) return parameter.project.ALLOW_LIFTING_IMPL_PARAMETER_TO_HEADER
if (ApplicationManager.getApplication().isUnitTestMode) return parameter.project.ALLOW_LIFTING_ACTUAL_PARAMETER_TO_EXPECTED
return Messages.showYesNoDialog(
"Do you want to delete this parameter in expected declaration and all related actual ones?",
@@ -422,7 +422,7 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() {
if (shouldAllowPropagationToExpected(element)) {
return listOf(headerParameter)
} else {
element.ownerFunction?.dropImplModifier = true
element.ownerFunction?.dropActualModifier = true
return listOf(element)
}
}
@@ -1,5 +1,5 @@
{
"mainFile": "JS/src/test/test.kt",
"elementClass": "org.jetbrains.kotlin.psi.KtParameter",
"liftParameterToHeader": "false"
"liftParameterToExpected": "false"
}
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.idea.jsonUtils.getString
import org.jetbrains.kotlin.idea.refactoring.AbstractMultifileRefactoringTest
import org.jetbrains.kotlin.idea.refactoring.rename.loadTestConfiguration
import org.jetbrains.kotlin.idea.refactoring.runRefactoringTest
import org.jetbrains.kotlin.idea.refactoring.safeDelete.KotlinSafeDeleteProcessor.Companion.ALLOW_LIFTING_IMPL_PARAMETER_TO_HEADER
import org.jetbrains.kotlin.idea.refactoring.safeDelete.KotlinSafeDeleteProcessor.Companion.ALLOW_LIFTING_ACTUAL_PARAMETER_TO_EXPECTED
import org.jetbrains.kotlin.idea.test.KotlinMultiFileTestCase
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
@@ -38,7 +38,7 @@ abstract class AbstractMultiModuleSafeDeleteTest : KotlinMultiFileTestCase() {
val elementClass = Class.forName(config.getString("elementClass")) as Class<PsiElement>
val element = elementsAtCaret.single().getNonStrictParentOfType(elementClass)!!
val project = mainFile.project
project.ALLOW_LIFTING_IMPL_PARAMETER_TO_HEADER = config.get("liftParameterToHeader")?.asBoolean ?: true
project.ALLOW_LIFTING_ACTUAL_PARAMETER_TO_EXPECTED = config.get("liftParameterToExpected")?.asBoolean ?: true
SafeDeleteHandler.invoke(project, arrayOf(element), null, true, null)
}
}