[psi] search in decompiled code: fix context receivers for properties also use string comparison for comparing types, because `PsiReferenceClassType` over cls for kotlin.jvm.functions.FunctionN resolves to null
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt index 72aba12..74d6064 100644 --- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt +++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/origin/KotlinDeclarationInCompiledFileSearcher.kt
@@ -119,6 +119,7 @@ private fun doPropertyMatch(member: PsiMethod, property: KtProperty, setter: Boolean): Boolean { val ktTypes = mutableListOf<KtTypeReference>() + property.contextReceivers.forEach { ktTypes.add(it.typeReference()!!) } property.receiverTypeReference?.let { ktTypes.add(it) } property.typeReference?.let { ktTypes.add(it) } @@ -204,7 +205,8 @@ return qualifiedName == StandardNames.FqNames.array.asString() || varArgs && areTypesTheSame(ktTypeRef, psiType.componentType, false) } - return ((psiType as? PsiClassType)?.rawType() ?: psiType).canonicalText == psiType(qualifiedName, ktTypeRef).canonicalText + //currently functional types are unresolved and thus type comparison doesn't work + return psiType.canonicalText.takeWhile { it != '<' } == psiType(qualifiedName, ktTypeRef).canonicalText } companion object {