diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveDirectoryWithClassesHelper.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveDirectoryWithClassesHelper.kt
index b342e997662..9d09c7baf91 100644
--- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveDirectoryWithClassesHelper.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesOrDirectories/KotlinMoveDirectoryWithClassesHelper.kt
@@ -90,7 +90,11 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
moveContextMap[file] = MoveContext(moveDestination,
fileHandler.findInternalUsages(file, moveDestination),
moveDeclarationsProcessor)
- moveDestination.getPackage()?.let { newPackage -> file.packageDirective?.fqName = FqName(newPackage.qualifiedName).quoteIfNeeded() }
+ if (moveDeclarationsProcessor != null) {
+ moveDestination.getPackage()?.let { newPackage ->
+ file.packageDirective?.fqName = FqName(newPackage.qualifiedName).quoteIfNeeded()
+ }
+ }
return true
}
@@ -109,10 +113,12 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
val moveContext = fileToMoveContext[file] ?: return@body
MoveFilesOrDirectoriesUtil.doMoveFile(file, moveContext.newParent)
+
+ val moveDeclarationsProcessor = moveContext.moveDeclarationsProcessor ?: return@body
val movedFile = moveContext.newParent.findFile(file.name) ?: return@body
usagesToProcessAfterMove +=
- FileUsagesWrapper(movedFile, it.usages + moveContext.internalUsages, moveContext.moveDeclarationsProcessor)
+ FileUsagesWrapper(movedFile, it.usages + moveContext.internalUsages, moveDeclarationsProcessor)
}
usagesToProcessAfterMove.forEach { fileHandler.retargetUsages(it.usages, it.moveDeclarationsProcessor!!) }
}
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/A.iml b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/A.iml
new file mode 100644
index 00000000000..245d3429faa
--- /dev/null
+++ b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/A.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/src/z/dummy.txt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/src/z/dummy.txt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/src/z/x/test.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/src/z/x/test.kt
new file mode 100644
index 00000000000..b3a0f5894f1
--- /dev/null
+++ b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/after/A/src/z/x/test.kt
@@ -0,0 +1,5 @@
+package y
+
+fun foo() {
+
+}
\ No newline at end of file
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/A.iml b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/A.iml
new file mode 100644
index 00000000000..245d3429faa
--- /dev/null
+++ b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/A.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/src/x/test.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/src/x/test.kt
new file mode 100644
index 00000000000..b3a0f5894f1
--- /dev/null
+++ b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/src/x/test.kt
@@ -0,0 +1,5 @@
+package y
+
+fun foo() {
+
+}
\ No newline at end of file
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/src/z/dummy.txt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/before/A/src/z/dummy.txt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/moveDirectoryKeepPackageDirective.test b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/moveDirectoryKeepPackageDirective.test
new file mode 100644
index 00000000000..4d78f2fae2e
--- /dev/null
+++ b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/moveDirectoryKeepPackageDirective.test
@@ -0,0 +1,7 @@
+{
+ "mainFile": "A/src/x/test.kt",
+ "type": "MOVE_DIRECTORY_WITH_CLASSES",
+ "sourceDir": "A/src/x",
+ "targetDir": "A/src/z",
+ "isMultiModule": "true"
+}
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/after/p1/M.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p1/M.kt
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/after/p1/M.kt
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p1/M.kt
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/JJ.java b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/JJ.java
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/JJ.java
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/JJ.java
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/L.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/L.kt
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/L.kt
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/L.kt
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/p/J.java b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/p/J.java
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/p/J.java
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/p/J.java
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/p/K.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/p/K.kt
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/after/p2/p/K.kt
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/after/p2/p/K.kt
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/before/p1/M.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p1/M.kt
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/before/p1/M.kt
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p1/M.kt
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/before/p1/p/J.java b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p1/p/J.java
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/before/p1/p/J.java
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p1/p/J.java
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/before/p1/p/K.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p1/p/K.kt
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/before/p1/p/K.kt
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p1/p/K.kt
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/before/p2/JJ.java b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p2/JJ.java
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/before/p2/JJ.java
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p2/JJ.java
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/before/p2/L.kt b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p2/L.kt
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/before/p2/L.kt
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/before/p2/L.kt
diff --git a/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectory.test b/idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/moveDirectoryWithPackageDirectiveChange.test
similarity index 100%
rename from idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectory.test
rename to idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryWithPackageDirectiveChange/moveDirectoryWithPackageDirectiveChange.test
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 9ec9e06bb5c..f0dd610fe37 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveTestGenerated.java
@@ -228,9 +228,15 @@ public class MoveTestGenerated extends AbstractMoveTest {
doTest(fileName);
}
- @TestMetadata("kotlin/moveDirectory/moveDirectory.test")
- public void testKotlin_moveDirectory_MoveDirectory() throws Exception {
- String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectory.test");
+ @TestMetadata("kotlin/moveDirectory/moveDirectoryKeepPackageDirective/moveDirectoryKeepPackageDirective.test")
+ public void testKotlin_moveDirectory_moveDirectoryKeepPackageDirective_MoveDirectoryKeepPackageDirective() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveDirectory/moveDirectoryKeepPackageDirective/moveDirectoryKeepPackageDirective.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");
doTest(fileName);
}