From 732702805205b85fed20b5a3287c81d7a9c9c233 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Tue, 7 Apr 2020 13:50:30 +0200 Subject: [PATCH] KotlinCopyPasteReferenceProcessor clean up Relates to #KT-37971 --- .../KotlinCopyPasteReferenceProcessor.kt | 7 +- .../idea/codeInsight/KotlinCopyPasteUtil.kt | 14 +++- .../codeInsight/KotlinCopyPasteUtil.kt.191 | 72 ------------------- .../codeInsight/KotlinCopyPasteUtil.kt.192 | 13 +++- 4 files changed, 27 insertions(+), 79 deletions(-) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.191 diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt index 8e41701ef09..8b0e54d47b1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt @@ -464,12 +464,9 @@ class KotlinCopyPasteReferenceProcessor : CopyPastePostProcessor> { - return@nonBlocking findReferencesToRestore(file, indicator, sourceFileBasedReferences, referencesByRange) + submitNonBlocking(project, indicator) { + return@submitNonBlocking findReferencesToRestore(file, indicator, sourceFileBasedReferences, referencesByRange) } - .withDocumentsCommitted(project) - //.cancelWith(indicator) - .submit(AppExecutorUtil.getAppExecutorService()) ) } diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt index 963ad55c7a3..6b7c7d0ee3d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt @@ -11,12 +11,16 @@ import com.intellij.codeInsight.hint.HintManagerImpl import com.intellij.codeInsight.hint.HintUtil import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ModalityState +import com.intellij.openapi.application.ReadAction.nonBlocking import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.editor.Editor +import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.project.Project import com.intellij.ui.LightweightHint import com.intellij.util.ArrayUtil +import com.intellij.util.concurrency.AppExecutorUtil import org.jetbrains.annotations.TestOnly +import org.jetbrains.concurrency.CancellablePromise import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer import org.jetbrains.kotlin.name.Name @@ -26,6 +30,7 @@ import java.util.* import javax.swing.event.HyperlinkEvent import javax.swing.event.HyperlinkListener +// BUNCH 192 object ReviewAddedImports { @get:TestOnly var importsToBeReviewed: Collection = emptyList() @@ -103,5 +108,12 @@ object ReviewAddedImports { KotlinImportOptimizer.replaceImports(file, newImports) }) } +} -} \ No newline at end of file +internal fun submitNonBlocking(project: Project, indicator: ProgressIndicator, block: () -> T): CancellablePromise = + nonBlocking { + return@nonBlocking block() + } + .withDocumentsCommitted(project) + .cancelWith(indicator) + .submit(AppExecutorUtil.getAppExecutorService()) \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.191 b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.191 deleted file mode 100644 index 1a3927c97c9..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.191 +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.codeInsight - -import com.intellij.codeInsight.CodeInsightBundle -import com.intellij.codeInsight.CodeInsightSettings -import com.intellij.codeInsight.hint.HintManager -import com.intellij.codeInsight.hint.HintManagerImpl -import com.intellij.codeInsight.hint.HintUtil -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.application.ModalityState -import com.intellij.openapi.command.WriteCommandAction -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.project.Project -import com.intellij.ui.LightweightHint -import com.intellij.util.ArrayUtil -import org.jetbrains.annotations.TestOnly -import org.jetbrains.kotlin.idea.KotlinBundle -import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.ImportPath -import java.util.* -import javax.swing.event.HyperlinkEvent -import javax.swing.event.HyperlinkListener - -object ReviewAddedImports { - @get:TestOnly - var importsToBeReviewed: Collection = emptyList() - - @get:TestOnly - var importsToBeDeleted: Collection = emptyList() - - fun reviewAddedImports( - project: Project, - editor: Editor, - file: KtFile, - imported: TreeSet - ) { - if (CodeInsightSettings.getInstance().ADD_IMPORTS_ON_PASTE == CodeInsightSettings.YES && - !imported.isEmpty() - ) { - if (ApplicationManager.getApplication().isUnitTestMode) { - importsToBeReviewed = imported - removeImports(project, file, importsToBeDeleted) - return - } - // there is actual no such functionality in 191 - } - } - - private fun removeImports( - project: Project, - file: KtFile, - importsToRemove: Collection - ) { - if (importsToRemove.isEmpty()) return - - WriteCommandAction.runWriteCommandAction(project, KotlinBundle.message("revert.applied.imports"), null, Runnable { - val newImports = file.importDirectives.mapNotNull { - val importedFqName = it.importedFqName ?: return@mapNotNull null - if (importsToRemove.contains(importedFqName.asString())) return@mapNotNull null - ImportPath(importedFqName, it.isAllUnder, it.aliasName?.let { alias -> Name.identifier(alias) }) - } - KotlinImportOptimizer.replaceImports(file, newImports) - }) - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.192 b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.192 index 940b6cd47ad..d4346096e74 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteUtil.kt.192 @@ -12,12 +12,16 @@ import com.intellij.codeInsight.hint.HintManagerImpl import com.intellij.codeInsight.hint.HintUtil import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ModalityState +import com.intellij.openapi.application.ReadAction.nonBlocking import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.editor.Editor +import com.intellij.openapi.progress.ProgressIndicator import com.intellij.openapi.project.Project import com.intellij.ui.LightweightHint import com.intellij.util.ArrayUtil +import com.intellij.util.concurrency.AppExecutorUtil import org.jetbrains.annotations.TestOnly +import org.jetbrains.concurrency.CancellablePromise import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer import org.jetbrains.kotlin.name.Name @@ -27,6 +31,7 @@ import java.util.* import javax.swing.event.HyperlinkEvent import javax.swing.event.HyperlinkListener +// BUNCH 192 object ReviewAddedImports { @get:TestOnly var importsToBeReviewed: Collection = emptyList() @@ -68,5 +73,11 @@ object ReviewAddedImports { KotlinImportOptimizer.replaceImports(file, newImports) }) } +} -} \ No newline at end of file +internal fun submitNonBlocking(project: Project, indicator: ProgressIndicator, block: () -> T): CancellablePromise = + nonBlocking { + return@nonBlocking block() + } + .withDocumentsCommitted(project) + .submit(AppExecutorUtil.getAppExecutorService()) \ No newline at end of file