From 8935c600c12ffbdb3a480f17ecad4ae2971e5b06 Mon Sep 17 00:00:00 2001 From: Vladimir Dolzhenko Date: Mon, 23 Mar 2020 14:46:13 +0000 Subject: [PATCH] Add checkCanceled on find usages execution path #KT-36138 Fixed --- .../idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt | 1 + .../kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt | 2 ++ 2 files changed, 3 insertions(+) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt index 27c4d57fcfc..9883f3c63be 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt @@ -927,6 +927,7 @@ class ExpressionsOfTypeProcessor( private fun searchReferences(parameters: ReferencesSearch.SearchParameters, processor: (PsiReference) -> Boolean) { ReferencesSearch.search(parameters).forEach(Processor { ref -> + ProgressManager.checkCanceled() runReadAction { if (ref.element.isValid) { processor(ref) diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt index 464ec7b7cfb..7863587bd1e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindUsagesHandler.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.findUsages.handlers import com.intellij.find.findUsages.FindUsagesHandler import com.intellij.find.findUsages.FindUsagesOptions import com.intellij.openapi.diagnostic.Logger +import com.intellij.openapi.progress.ProgressManager import com.intellij.psi.PsiElement import com.intellij.psi.PsiReference import com.intellij.psi.impl.light.LightMemberReference @@ -140,6 +141,7 @@ abstract class KotlinFindUsagesHandler( processor.processIfNotNull { if (element.isValid) UsageInfo(element) else null } private fun UsageInfoProcessor.processIfNotNull(callback: () -> UsageInfo?): Boolean { + ProgressManager.checkCanceled() val usageInfo = runReadAction(callback) return if (usageInfo != null) process(usageInfo) else true }