[light classes] match property with getter or setter only
^ KTIJ-26536
This commit is contained in:
+19
-9
@@ -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<String>): 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 {
|
||||
|
||||
Reference in New Issue
Block a user