Move: Fix incorrect FqName when moving declaration to default package

#KT-15586 Fixed
This commit is contained in:
Alexey Sedunov
2017-03-08 14:49:19 +03:00
parent 1331922963
commit 1a8aa6091a
6 changed files with 31 additions and 1 deletions
@@ -188,7 +188,8 @@ fun KtElement.lazilyProcessInternalReferencesToUpdateOnPackageNameChange(
val prefix = containerFqName.asString()
val prefixOffset = it.indexOf(prefix)
val newFqName = if (prefix.isEmpty()) {
FqName("${newContainer.fqName!!.asString()}.$it")
val newContainerFqName = newContainer.fqName!!
FqName(if (newContainerFqName.isRoot) it else "${newContainer.fqName!!.asString()}.$it")
}
else {
FqName(it.replaceRange(prefixOffset..prefixOffset + prefix.length - 1, newContainer.fqName!!.asString()))
@@ -0,0 +1,6 @@
class a {
companion object b {
fun c() = "..."
}
fun d() = c()
}
@@ -0,0 +1,10 @@
class <caret>a {
companion object b {
fun c() = "..."
}
fun d() = c()
}
fun foo() {
}
@@ -0,0 +1,4 @@
{
"mainFile": "test.kt",
"intentionClass": "org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveDeclarationToSeparateFileIntention"
}
@@ -78,6 +78,12 @@ public class MultiFileIntentionTestGenerated extends AbstractMultiFileIntentionT
doTest(fileName);
}
@TestMetadata("moveDeclarationToSeparateFile/moveClassToFileInDefaultPackage/moveClassToFileInDefaultPackage.test")
public void testMoveDeclarationToSeparateFile_moveClassToFileInDefaultPackage_MoveClassToFileInDefaultPackage() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/multiFileIntentions/moveDeclarationToSeparateFile/moveClassToFileInDefaultPackage/moveClassToFileInDefaultPackage.test");
doTest(fileName);
}
@TestMetadata("moveDeclarationToSeparateFile/moveSingleToFile/moveSingleToFile.test")
public void testMoveDeclarationToSeparateFile_moveSingleToFile_MoveSingleToFile() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/multiFileIntentions/moveDeclarationToSeparateFile/moveSingleToFile/moveSingleToFile.test");