From b725cd3e6cc23e84c05fcb8fd62ff41f768dfa47 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 7 Aug 2023 16:13:41 +0200 Subject: [PATCH] [light classes] match property with getter or setter only ^ KTIJ-26536 --- ...KotlinDeclarationInCompiledFileSearcher.kt | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) 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 {