From 4b6efe3eb0245e558e4e935be8723dd1033360d7 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 28 Dec 2017 12:50:29 +0100 Subject: [PATCH] Take read action in `KtLightParameter.isEquivalentTo()` EA-109775 - (OperatorReferencesSearcher) assert: PsiFileImpl.getStubTree --- .../asJava/elements/KtLightParameter.kt | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameter.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameter.kt index 6a2289dc26b..1855567890e 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameter.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/elements/KtLightParameter.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.asJava.elements import com.intellij.lang.Language +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.util.Computable import com.intellij.openapi.util.TextRange import com.intellij.psi.* import com.intellij.psi.search.LocalSearchScope @@ -101,11 +103,18 @@ class KtLightParameter( override fun getParent(): PsiElement = method.parameterList override fun isEquivalentTo(another: PsiElement?): Boolean { - val kotlinOrigin = kotlinOrigin - if (another is KtLightParameter && kotlinOrigin != null) { - val anotherParam = another as KtLightParameter? - return kotlinOrigin == anotherParam!!.kotlinOrigin && clsDelegate == anotherParam.clsDelegate - } + val result = ApplicationManager.getApplication().runReadAction(Computable { + val kotlinOrigin = kotlinOrigin + if (another is KtLightParameter && kotlinOrigin != null) { + val anotherParam = another as KtLightParameter? + kotlinOrigin == anotherParam!!.kotlinOrigin && clsDelegate == anotherParam.clsDelegate + } + else { + null + } + }) + result?.let { return it } + return super.isEquivalentTo(another) }