Move: Process Kotlin files befoire Java files
This ensures that light classes are updated before changing references in Java files. #KT-10577 Fixed
This commit is contained in:
@@ -425,10 +425,20 @@ fun invokeMoveFilesOrDirectoriesRefactoring(
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
val choice = if (elements.size > 1 || elements[0] is PsiDirectory) intArrayOf(-1) else null
|
val choice = if (elements.size > 1 || elements[0] is PsiDirectory) intArrayOf(-1) else null
|
||||||
val elementsToMove = elements.filterNot {
|
val elementsToMove = elements
|
||||||
it is PsiFile
|
.filterNot {
|
||||||
&& runWriteAction { CopyFilesOrDirectoriesHandler.checkFileExist(selectedDir, choice, it, it.name, "Move") }
|
it is PsiFile
|
||||||
}
|
&& runWriteAction { CopyFilesOrDirectoriesHandler.checkFileExist(selectedDir, choice, it, it.name, "Move") }
|
||||||
|
}
|
||||||
|
.sortedWith( // process Kotlin files first so that light classes are updated before changing references in Java files
|
||||||
|
Comparator { o1, o2 ->
|
||||||
|
when {
|
||||||
|
o1 is KtElement && o2 !is KtElement -> -1
|
||||||
|
o1 !is KtElement && o2 is KtElement -> 1
|
||||||
|
else -> 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
elementsToMove.forEach {
|
elementsToMove.forEach {
|
||||||
MoveFilesOrDirectoriesUtil.checkMove(it, selectedDir!!)
|
MoveFilesOrDirectoriesUtil.checkMove(it, selectedDir!!)
|
||||||
|
|||||||
Reference in New Issue
Block a user