AbstractFindUsagesTest: add read lock

This commit is contained in:
Dmitry Gridin
2019-07-26 12:51:46 +03:00
parent dbb9b3b6fd
commit 2e0ec3b490
2 changed files with 7 additions and 5 deletions
@@ -19,7 +19,6 @@ 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.project.DumbService
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference
import com.intellij.psi.impl.light.LightMemberReference
@@ -32,6 +31,7 @@ import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory
import org.jetbrains.kotlin.idea.findUsages.KotlinReferencePreservingUsageInfo
import org.jetbrains.kotlin.idea.findUsages.KotlinReferenceUsageInfo
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.runReadActionInSmartMode
import java.util.*
abstract class KotlinFindUsagesHandler<T : PsiElement>(
@@ -76,7 +76,7 @@ abstract class KotlinFindUsagesHandler<T : PsiElement>(
private fun searchReferences(element: PsiElement, processor: Processor<UsageInfo>, options: FindUsagesOptions): Boolean {
val searcher = createSearcher(element, processor, options)
if (!DumbService.getInstance(project).runReadActionInSmartMode<Boolean> { searcher.buildTaskList() }) return false
if (!project.runReadActionInSmartMode { searcher.buildTaskList() }) return false
return searcher.executeTasks()
}
@@ -46,6 +46,7 @@ import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.idea.test.TestFixtureExtension
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.runReadActionInSmartMode
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -291,9 +292,10 @@ internal fun findUsages(
val processor = CommonProcessors.CollectProcessor<UsageInfo>()
for (psiElement in handler.primaryElements + handler.secondaryElements) {
if (highlightingMode) {
//TODO: should findReferencesToHighlight work outside read-action or it makes no sense?
for (reference in handler.findReferencesToHighlight(psiElement, options.searchScope)) {
processor.process(UsageInfo(reference))
project.runReadActionInSmartMode {
for (reference in handler.findReferencesToHighlight(psiElement, options.searchScope)) {
processor.process(UsageInfo(reference))
}
}
} else {
ProgressManager.getInstance().run(object : Task(project, "", false) {