Move: Do not skip usages of declarations without light elements

#KT-18873 Fixed
This commit is contained in:
Alexey Sedunov
2017-08-02 16:02:13 +03:00
parent f455f06a9e
commit 62ca3bab31
7 changed files with 33 additions and 1 deletions
@@ -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<PsiElement, String>()
override fun getRefactoringId() = REFACTORING_ID
@@ -0,0 +1,6 @@
package headers.classes
import headers2.funs3.NonHeaderClass
import headers2.funs3.HeaderClass
fun f(p: HeaderClass) = NonHeaderClass()
@@ -0,0 +1,4 @@
package headers2.funs3
class NonHeaderClass
header class HeaderClass
@@ -0,0 +1,6 @@
package headers.classes
import headers.funs.NonHeaderClass
import headers.funs.HeaderClass
fun f(p: HeaderClass) = NonHeaderClass()
@@ -0,0 +1,4 @@
package headers.funs
class NonHeaderClass
header class HeaderClass
@@ -0,0 +1,5 @@
{
"mainFile": "headers/funs/funs.kt",
"type": "CHANGE_PACKAGE_DIRECTIVE",
"newPackageName": "headers2.funs3"
}
@@ -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");