From 0a0457298be74d89f0f75e5c95b57dceb23027e3 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 13 Sep 2017 12:42:40 +0300 Subject: [PATCH] Misc: Run MoveKotlinDeclarationsProcessor.findUsages() under progress #KT-20205 Fixed --- .../cutPaste/MoveDeclarationsProcessor.kt | 9 ++++++++- .../KotlinChangePackageRefactoring.kt | 15 +++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt index 75a8da6e3d0..19119827944 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsProcessor.kt @@ -23,11 +23,14 @@ import com.intellij.openapi.util.TextRange import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiManager +import com.intellij.refactoring.RefactoringBundle import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests import org.jetbrains.kotlin.idea.conversion.copy.range import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* +import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.application.executeWriteCommand +import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.getSourceRoot import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.endOffset @@ -117,7 +120,11 @@ class MoveDeclarationsProcessor( mover ) - val declarationUsages = declarationProcessor.findUsages().toList() + val declarationUsages = project.runSynchronouslyWithProgress(RefactoringBundle.message("progress.text"), true) { + runReadAction { + declarationProcessor.findUsages().toList() + } + } ?: return project.executeWriteCommand(commandName, commandGroupId) { project.runRefactoringAndKeepDelayedRequests { declarationProcessor.execute(declarationUsages) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt index c3bbad637ae..b94f779c66c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/changePackage/KotlinChangePackageRefactoring.kt @@ -16,18 +16,17 @@ package org.jetbrains.kotlin.idea.refactoring.move.changePackage -import com.intellij.openapi.vfs.VirtualFile -import com.intellij.psi.PsiDirectory -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiFile +import com.intellij.refactoring.RefactoringBundle import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests +import org.jetbrains.kotlin.idea.core.quoteIfNeeded import org.jetbrains.kotlin.idea.refactoring.move.ContainerChangeInfo import org.jetbrains.kotlin.idea.refactoring.move.ContainerInfo import org.jetbrains.kotlin.idea.refactoring.move.getInternalReferencesToUpdateOnPackageNameChange import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.* import org.jetbrains.kotlin.idea.refactoring.move.postProcessMoveUsages -import org.jetbrains.kotlin.idea.core.quoteIfNeeded +import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.util.application.executeWriteCommand +import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtNamedDeclaration @@ -50,7 +49,11 @@ class KotlinChangePackageRefactoring(val file: KtFile) { Mover.Idle // we don't need to move any declarations physically ) - val declarationUsages = declarationProcessor.findUsages().toList() + val declarationUsages = project.runSynchronouslyWithProgress(RefactoringBundle.message("progress.text"), true) { + runReadAction { + declarationProcessor.findUsages().toList() + } + } ?: return val changeInfo = ContainerChangeInfo(ContainerInfo.Package(currentFqName), ContainerInfo.Package(newFqName)) val internalUsages = file.getInternalReferencesToUpdateOnPackageNameChange(changeInfo)