Take read action in KtLightParameter.isEquivalentTo()

EA-109775 - (OperatorReferencesSearcher) assert: PsiFileImpl.getStubTree
This commit is contained in:
Dmitry Jemerov
2017-12-28 12:50:29 +01:00
parent 7f1dd88600
commit 4b6efe3eb0
@@ -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)
}