[Invariant Fix] Fix KotlinPsiUnifier after types refinement introduction
Refined types with non-trivial substitution may result in different descriptors instances See PsiUnifierTestGenerated$Equivalence$Expressions.testArrayAccess
This commit is contained in:
committed by
Dmitry Savvinov
parent
c49791f8bb
commit
21cc93860b
+3
-1
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorEquivalenceForOverrides
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
@@ -123,7 +124,8 @@ class KotlinPsiUnifier(
|
||||
}
|
||||
|
||||
private fun matchDescriptors(d1: DeclarationDescriptor?, d2: DeclarationDescriptor?): Boolean {
|
||||
if (d1 == d2 || d2 in declarationPatternsToTargets[d1] || d1 in declarationPatternsToTargets[d2]) return true
|
||||
if (DescriptorEquivalenceForOverrides.areEquivalent(d1, d2)) return true
|
||||
if (d2 in declarationPatternsToTargets[d1] || d1 in declarationPatternsToTargets[d2]) return true
|
||||
if (d1 == null || d2 == null) return false
|
||||
|
||||
val decl1 = DescriptorToSourceUtils.descriptorToDeclaration(d1) as? KtDeclaration
|
||||
|
||||
Reference in New Issue
Block a user