diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt index d1657a94031..bdd3d56eeae 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt @@ -52,6 +52,7 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext import org.jetbrains.kotlin.psi.psiUtil.isAncestor +import org.jetbrains.kotlin.utils.ifEmpty import org.jetbrains.kotlin.utils.keysToMap import java.lang.AssertionError import java.util.* @@ -129,7 +130,7 @@ class MoveKotlinDeclarationsProcessor( private val elementsToMove = descriptor.elementsToMove.filter { e -> e.parent != descriptor.moveTarget.getTargetPsiIfExists(e) } private val kotlinToLightElementsBySourceFile = elementsToMove .groupBy { it.containingKtFile } - .mapValues { it.value.keysToMap { it.toLightElements() } } + .mapValues { it.value.keysToMap { it.toLightElements().ifEmpty { listOf(it) } } } private val conflicts = MultiMap() override fun getRefactoringId() = REFACTORING_ID diff --git a/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/after/headers/classes/classes.kt b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/after/headers/classes/classes.kt new file mode 100644 index 00000000000..9ccc165bd69 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/after/headers/classes/classes.kt @@ -0,0 +1,6 @@ +package headers.classes + +import headers2.funs3.NonHeaderClass +import headers2.funs3.HeaderClass + +fun f(p: HeaderClass) = NonHeaderClass() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/after/headers/funs/funs.kt b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/after/headers/funs/funs.kt new file mode 100644 index 00000000000..b34732b05ae --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/after/headers/funs/funs.kt @@ -0,0 +1,4 @@ +package headers2.funs3 + +class NonHeaderClass +header class HeaderClass \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/before/headers/classes/classes.kt b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/before/headers/classes/classes.kt new file mode 100644 index 00000000000..e3c20a785ad --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/before/headers/classes/classes.kt @@ -0,0 +1,6 @@ +package headers.classes + +import headers.funs.NonHeaderClass +import headers.funs.HeaderClass + +fun f(p: HeaderClass) = NonHeaderClass() \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/before/headers/funs/funs.kt b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/before/headers/funs/funs.kt new file mode 100644 index 00000000000..e0dd1810b2d --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/before/headers/funs/funs.kt @@ -0,0 +1,4 @@ +package headers.funs + +class NonHeaderClass +header class HeaderClass \ No newline at end of file diff --git a/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/headerClasses.test b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/headerClasses.test new file mode 100644 index 00000000000..878f1706d08 --- /dev/null +++ b/idea/testData/refactoring/move/kotlin/changePackage/headerClasses/headerClasses.test @@ -0,0 +1,5 @@ +{ + "mainFile": "headers/funs/funs.kt", + "type": "CHANGE_PACKAGE_DIRECTIVE", + "newPackageName": "headers2.funs3" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java index 7de65ee9ccd..57ff64dd394 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java @@ -228,6 +228,12 @@ public class MoveTestGenerated extends AbstractMoveTest { doTest(fileName); } + @TestMetadata("kotlin/changePackage/headerClasses/headerClasses.test") + public void testKotlin_changePackage_headerClasses_HeaderClasses() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/changePackage/headerClasses/headerClasses.test"); + doTest(fileName); + } + @TestMetadata("kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/moveDirectoryWithPackageDirectiveChange.test") public void testKotlin_moveDirectory_moveDirectoryWithPackageDirectiveChange_MoveDirectoryWithPackageDirectiveChange() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/moveDirectoryWithPackageDirectiveChange.test");