diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt index b5056c0144a..7d640faa466 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt @@ -57,10 +57,7 @@ import org.jetbrains.kotlin.idea.util.actualsForExpected import org.jetbrains.kotlin.idea.util.liftToExpected import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType -import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch -import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier -import org.jetbrains.kotlin.psi.psiUtil.parameterIndex +import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.utils.SmartSet @@ -388,11 +385,17 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { override fun prepareForDeletion(element: PsiElement) { if (element is KtDeclaration) { element.actualsForExpected().forEach { - if (it is KtParameter) { - (it.parent as? KtParameterList)?.removeParameter(it) - } else { - it.removeModifier(KtTokens.IMPL_KEYWORD) - it.removeModifier(KtTokens.ACTUAL_KEYWORD) + when (it) { + is KtParameter -> { + (it.parent as? KtParameterList)?.removeParameter(it) + } + is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> { + it.delete() + } + else -> { + it.removeModifier(KtTokens.IMPL_KEYWORD) + it.removeModifier(KtTokens.ACTUAL_KEYWORD) + } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.172 b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.172 index 7ad178a6abc..99e1275380e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.172 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.172 @@ -377,12 +377,17 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { override fun prepareForDeletion(element: PsiElement) { if (element is KtDeclaration) { element.actualsForExpected().forEach { - if (it is KtParameter) { - (it.parent as? KtParameterList)?.removeParameter(it) - } - else { - it.removeModifier(KtTokens.IMPL_KEYWORD) - it.removeModifier(KtTokens.ACTUAL_KEYWORD) + when (it) { + is KtParameter -> { + (it.parent as? KtParameterList)?.removeParameter(it) + } + is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> { + it.delete() + } + else -> { + it.removeModifier(KtTokens.IMPL_KEYWORD) + it.removeModifier(KtTokens.ACTUAL_KEYWORD) + } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.173 b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.173 index abf175f6ece..3168a77fa74 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.173 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt.173 @@ -387,12 +387,17 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { override fun prepareForDeletion(element: PsiElement) { if (element is KtDeclaration) { element.actualsForExpected().forEach { - if (it is KtParameter) { - (it.parent as? KtParameterList)?.removeParameter(it) - } - else { - it.removeModifier(KtTokens.IMPL_KEYWORD) - it.removeModifier(KtTokens.ACTUAL_KEYWORD) + when (it) { + is KtParameter -> { + (it.parent as? KtParameterList)?.removeParameter(it) + } + is KtCallableDeclaration, is KtClassOrObject, is KtTypeAlias -> { + it.delete() + } + else -> { + it.removeModifier(KtTokens.IMPL_KEYWORD) + it.removeModifier(KtTokens.ACTUAL_KEYWORD) + } } } } diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JS/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JS/src/test/test.kt index b57d126eac1..05ea9e66143 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JS/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JS/src/test/test.kt @@ -1,4 +1,3 @@ package test -open class Foo actual class ChildOfFoo : Foo() \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JVM/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JVM/src/test/test.kt index b57d126eac1..05ea9e66143 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JVM/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClass/after/JVM/src/test/test.kt @@ -1,4 +1,3 @@ package test -open class Foo actual class ChildOfFoo : Foo() \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JS/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JS/src/test/test.kt index 7a7a953ee3d..36d9a7fe23b 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JS/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JS/src/test/test.kt @@ -1,9 +1,6 @@ package test actual class Foo { - fun foo(n: Int) { - - } } fun test(f: Foo) { diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JVM/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JVM/src/test/test.kt index 7a7a953ee3d..36d9a7fe23b 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JVM/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberFun/after/JVM/src/test/test.kt @@ -1,9 +1,6 @@ package test actual class Foo { - fun foo(n: Int) { - - } } fun test(f: Foo) { diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JS/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JS/src/test/test.kt index 9a4bac7d84c..566655aa728 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JS/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JS/src/test/test.kt @@ -1,7 +1,6 @@ package test actual class Foo { - val foo get() = 1 } fun test(f: Foo) = f.foo \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JVM/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JVM/src/test/test.kt index 72a759f4139..566655aa728 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JVM/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassMemberVal/after/JVM/src/test/test.kt @@ -1,7 +1,6 @@ package test actual class Foo { - val foo get() = 2 } fun test(f: Foo) = f.foo \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JS/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JS/src/test/test.kt index 14f90848192..fee095b8035 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JS/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JS/src/test/test.kt @@ -1,7 +1,6 @@ package test actual open class Foo { - constructor(n: Int) } fun test() = Foo(1) \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JVM/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JVM/src/test/test.kt index 6d1faa10106..7191d532154 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JVM/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderClassSecondaryConstructor/after/JVM/src/test/test.kt @@ -1,7 +1,6 @@ package test actual open class Foo { - constructor(n: Int) } fun test() = Foo(2) \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JS/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JS/src/test/test.kt index e3a27060cc8..a77302d41cb 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JS/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JS/src/test/test.kt @@ -1,9 +1,5 @@ package test -fun foo(n: Int) { - -} - fun test() { foo(1) } \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JVM/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JVM/src/test/test.kt index e3a27060cc8..a77302d41cb 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JVM/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderFun/after/JVM/src/test/test.kt @@ -1,9 +1,5 @@ package test -fun foo(n: Int) { - -} - fun test() { foo(1) } \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JS/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JS/src/test/test.kt index 3e9a7670ff0..7691e56ec64 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JS/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JS/src/test/test.kt @@ -1,5 +1,3 @@ package test -val foo get() = 1 - fun test() = foo \ No newline at end of file diff --git a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JVM/src/test/test.kt b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JVM/src/test/test.kt index c2e8d1f20fd..7691e56ec64 100644 --- a/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JVM/src/test/test.kt +++ b/idea/testData/refactoring/safeDeleteMultiModule/byHeaderVal/after/JVM/src/test/test.kt @@ -1,5 +1,3 @@ package test -val foo get() = 2 - fun test() = foo \ No newline at end of file