create KotlinReferenceUsageInfo in read action
This commit is contained in:
@@ -90,10 +90,15 @@ public abstract class KotlinFindUsagesHandler<T : PsiElement>(psiElement: T,
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
protected fun processUsage(processor: Processor<UsageInfo>, ref: PsiReference): Boolean
|
protected fun processUsage(processor: Processor<UsageInfo>, ref: PsiReference): Boolean =
|
||||||
= processor.process(KotlinReferenceUsageInfo(ref))
|
processor.processIfNotNull { if (ref.element.valid) KotlinReferenceUsageInfo(ref) else null }
|
||||||
|
|
||||||
protected fun processUsage(processor: Processor<UsageInfo>, element: PsiElement): Boolean
|
protected fun processUsage(processor: Processor<UsageInfo>, element: PsiElement): Boolean =
|
||||||
= processor.process(UsageInfo(element))
|
processor.processIfNotNull { if (element.valid) UsageInfo(element) else null }
|
||||||
|
|
||||||
|
private fun Processor<UsageInfo>.processIfNotNull(callback: () -> UsageInfo?): Boolean {
|
||||||
|
val usageInfo = runReadAction(callback)
|
||||||
|
return if (usageInfo != null) process(usageInfo) else true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user