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 86b349d2722..244a5ece02d 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 @@ -80,12 +80,27 @@ abstract class KotlinDeclarationInCompiledFileSearcher { } else if (JvmAbi.isSetterName(memberName) && PsiType.VOID.equals(member.returnType)) { propertyNamesBySetMethodName(Name.identifier(memberName)).forEach { names.add(it.identifier) } true - } else true + } else null declarations .firstOrNull { declaration -> - nameMatches(declaration, names) && - (declaration is KtNamedFunction && doParametersMatch(member, declaration) || - declaration is KtProperty && doPropertyMatch(member, declaration, setter)) + val declarationName = getJvmName(declaration) + when (declaration) { + is KtNamedFunction -> { + declarationName in names && doParametersMatch(member, declaration) + } + is KtProperty -> { + val getterName = getJvmName(declaration.getter) + val setterName = getJvmName(declaration.setter) + if (setter != null) { + val accessorName = (if (setter) setterName else getterName) ?: declarationName + accessorName in names && doPropertyMatch(member, declaration, setter) + } else { + getterName in names && doPropertyMatch(member, declaration, false) || + setterName in names && doPropertyMatch(member, declaration, true) + } + } + else -> false + } } } @@ -99,11 +114,6 @@ abstract class KotlinDeclarationInCompiledFileSearcher { } } - private fun nameMatches(declaration: KtDeclaration?, names: MutableList): Boolean { - if (getJvmName(declaration) in names) return true - return declaration is KtProperty && (getJvmName(declaration.getter) in names || getJvmName(declaration.setter) in names) - } - private fun getJvmName(declaration: KtDeclaration?): String? { if (declaration == null) return null val annotationEntry = declaration.annotationEntries.firstOrNull {