From 7d02b522dbedabfd1cc75ca8e215797c4c01d5a7 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 2 Jun 2015 20:35:09 +0200 Subject: [PATCH] KotlinReferencesSearcher: remove enclosing read action, use queryParameters.getOptimizer().searchWord #KT-7917 Fixed --- .../KotlinReferencesSearcher.kt | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt index 5c7d06cd43b..3c772e03abb 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferencesSearcher.kt @@ -18,12 +18,17 @@ package org.jetbrains.kotlin.idea.search.ideaExtensions import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.QueryExecutorBase +import com.intellij.openapi.progress.ProgressManager import com.intellij.openapi.util.Computable import com.intellij.psi.* +import com.intellij.psi.search.RequestResultProcessor import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.util.PsiTreeUtil import com.intellij.util.Processor -import org.jetbrains.kotlin.asJava.* +import org.jetbrains.kotlin.asJava.KotlinLightMethod +import org.jetbrains.kotlin.asJava.LightClassUtil +import org.jetbrains.kotlin.asJava.namedUnwrappedElement +import org.jetbrains.kotlin.idea.references.matchesTarget import org.jetbrains.kotlin.idea.search.usagesSearch.* import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.application.runReadAction @@ -37,14 +42,29 @@ public class KotlinReferencesSearcher : QueryExecutorBase): Boolean { + return referenceService.getReferences(element, PsiReferenceService.Hints.NO_HINTS).all { ref -> + ProgressManager.checkCanceled() + + when { + !ReferenceRange.containsOffsetInElement(ref, offsetInElement) -> true + !ref.matchesTarget(unwrappedElement) -> true + else -> consumer.process(ref) + } + } } - }) + } + + words.forEach { word -> + queryParameters.getOptimizer().searchWord(word, queryParameters.getEffectiveSearchScope(), + UsagesSearchLocation.EVERYWHERE.searchContext, true, unwrappedElement, + resultProcessor) + } searchLightElements(queryParameters, element) }