create KotlinReferenceUsageInfo in read action

This commit is contained in:
Dmitry Jemerov
2015-07-21 18:11:37 +02:00
parent 90d2a0dd3c
commit 3012815f5f
@@ -90,10 +90,15 @@ public abstract class KotlinFindUsagesHandler<T : PsiElement>(psiElement: T,
companion object {
protected fun processUsage(processor: Processor<UsageInfo>, ref: PsiReference): Boolean
= processor.process(KotlinReferenceUsageInfo(ref))
protected fun processUsage(processor: Processor<UsageInfo>, ref: PsiReference): Boolean =
processor.processIfNotNull { if (ref.element.valid) KotlinReferenceUsageInfo(ref) else null }
protected fun processUsage(processor: Processor<UsageInfo>, element: PsiElement): Boolean
= processor.process(UsageInfo(element))
protected fun processUsage(processor: Processor<UsageInfo>, element: PsiElement): Boolean =
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
}
}
}