From 983de529ed514f9872510e7f15950d58d7b98a09 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Tue, 29 Sep 2015 20:22:05 +0200 Subject: [PATCH] add missing read actions to overriders search #KT-9147 Fixed --- .../declarationsSearch/overridersSearch.kt | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt index dcf9b46ac5e..453a7b6b25c 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt @@ -16,26 +16,21 @@ package org.jetbrains.kotlin.idea.search.declarationsSearch -import com.intellij.psi.PsiMethod -import com.intellij.psi.util.PsiUtil -import org.jetbrains.kotlin.psi.JetDeclaration -import com.intellij.psi.PsiElement -import com.intellij.util.Processor -import com.intellij.util.Query -import java.util.HashMap -import org.jetbrains.kotlin.psi.psiUtil.* -import java.util.Collections -import com.intellij.psi.PsiClass -import com.intellij.psi.util.TypeConversionUtil -import com.intellij.psi.PsiSubstitutor -import com.intellij.psi.util.MethodSignatureUtil -import com.intellij.psi.PsiModifier -import com.intellij.psi.JavaPsiFacade +import com.intellij.psi.* import com.intellij.psi.search.searches.DirectClassInheritorsSearch +import com.intellij.psi.util.MethodSignatureUtil +import com.intellij.psi.util.PsiUtil +import com.intellij.psi.util.TypeConversionUtil import com.intellij.util.EmptyQuery import com.intellij.util.MergeQuery +import com.intellij.util.Processor +import com.intellij.util.Query import org.jetbrains.kotlin.asJava.toLightMethods import org.jetbrains.kotlin.idea.search.allScope +import org.jetbrains.kotlin.idea.util.application.runReadAction +import org.jetbrains.kotlin.psi.JetDeclaration +import org.jetbrains.kotlin.psi.psiUtil.isOverridable +import java.util.* fun PsiElement.isOverridableElement(): Boolean = when (this) { is PsiMethod -> PsiUtil.canBeOverriden(this) @@ -44,7 +39,7 @@ fun PsiElement.isOverridableElement(): Boolean = when (this) { } public fun HierarchySearchRequest<*>.searchOverriders(): Query { - val psiMethods = originalElement.toLightMethods() + val psiMethods = runReadAction { originalElement.toLightMethods() } if (psiMethods.isEmpty()) return EmptyQuery.getEmptyQuery() return psiMethods @@ -92,7 +87,7 @@ public object KotlinPsiMethodOverridersSearch : HierarchySearch(PsiMe } protected override fun isApplicable(request: HierarchySearchRequest): Boolean = - request.originalElement.isOverridableElement() + runReadAction { request.originalElement.isOverridableElement() } override fun doSearchDirect(request: HierarchySearchRequest, consumer: Processor) { searchDirectOverriders(request.originalElement).forEach { method -> consumer.process(method) }