Move File/Change Package: Change package directive prior to processing of internal usages (otherwise some necessary imports are not added)

This commit is contained in:
Alexey Sedunov
2015-05-15 14:50:14 +03:00
parent 1a60995ea9
commit da6b8b75ea
13 changed files with 81 additions and 2 deletions
@@ -61,8 +61,8 @@ public class KotlinChangePackageRefactoring(val file: JetFile) {
val internalUsages = file.getInternalReferencesToUpdateOnPackageNameChange(PackageNameInfo(currentFqName, newFqName))
project.executeWriteCommand("Change file's package to '${newFqName.asString()}'") {
postProcessMoveUsages(internalUsages)
packageDirective.setFqName(newFqName)
postProcessMoveUsages(internalUsages)
project.runWithElementsToShortenIsEmptyIgnored { declarationProcessor.execute(declarationUsages) }
}
}
@@ -94,8 +94,9 @@ public class MoveKotlinFileHandler : MoveFileHandler() {
if (file !is JetFile) return
val packageNameInfo = packageNameInfo ?: return
postProcessMoveUsages(file.getInternalReferencesToUpdateOnPackageNameChange(packageNameInfo))
val internalUsages = file.getInternalReferencesToUpdateOnPackageNameChange(packageNameInfo)
file.getPackageDirective()?.setFqName(packageNameInfo.newPackageName)
postProcessMoveUsages(internalUsages)
}
override fun retargetUsages(usageInfos: List<UsageInfo>?, oldToNewMap: Map<PsiElement, PsiElement>?) {
@@ -0,0 +1,5 @@
{
"mainFile": "source/foo.kt",
"type": "CHANGE_PACKAGE_DIRECTIVE",
"newPackageName": "source"
}
@@ -0,0 +1,7 @@
package target
import source.C
fun C.foo() {
}
@@ -0,0 +1,9 @@
package source
import target.foo
class C
fun test(c: C) {
c.foo()
}
@@ -0,0 +1,5 @@
package target
fun C.foo() {
}
@@ -0,0 +1,7 @@
package target
class C
fun test(c: C) {
c.foo()
}
@@ -0,0 +1,5 @@
{
"mainFile": "source/foo.kt",
"type": "MOVE_FILES",
"targetPackage": "target"
}
@@ -0,0 +1,7 @@
package source
import target.C
fun C.foo() {
}
@@ -0,0 +1,9 @@
package target
import source.foo
class C
fun test(c: C) {
c.foo()
}
@@ -0,0 +1,5 @@
package source
fun C.foo() {
}
@@ -0,0 +1,7 @@
package source
class C
fun test(c: C) {
c.foo()
}
@@ -209,6 +209,12 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest {
doTest(fileName);
}
@TestMetadata("kotlin/changePackage/addExtensionImport/addExtensionImport.test")
public void testKotlin_changePackage_addExtensionImport_AddExtensionImport() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/changePackage/addExtensionImport/addExtensionImport.test");
doTest(fileName);
}
@TestMetadata("kotlin/changePackage/changeToDefaultPackage/changeToDefaultPackage.test")
public void testKotlin_changePackage_changeToDefaultPackage_ChangeToDefaultPackage() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/changePackage/changeToDefaultPackage/changeToDefaultPackage.test");
@@ -221,6 +227,12 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest {
doTest(fileName);
}
@TestMetadata("kotlin/moveFile/addExtensionImport/addExtensionImport.test")
public void testKotlin_moveFile_addExtensionImport_AddExtensionImport() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveFile/addExtensionImport/addExtensionImport.test");
doTest(fileName);
}
@TestMetadata("kotlin/moveFile/internalReferences/internalReferences.test")
public void testKotlin_moveFile_internalReferences_InternalReferences() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/move/kotlin/moveFile/internalReferences/internalReferences.test");