[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)) {
|
} else if (JvmAbi.isSetterName(memberName) && PsiType.VOID.equals(member.returnType)) {
|
||||||
propertyNamesBySetMethodName(Name.identifier(memberName)).forEach { names.add(it.identifier) }
|
propertyNamesBySetMethodName(Name.identifier(memberName)).forEach { names.add(it.identifier) }
|
||||||
true
|
true
|
||||||
} else true
|
} else null
|
||||||
declarations
|
declarations
|
||||||
.firstOrNull { declaration ->
|
.firstOrNull { declaration ->
|
||||||
nameMatches(declaration, names) &&
|
val declarationName = getJvmName(declaration)
|
||||||
(declaration is KtNamedFunction && doParametersMatch(member, declaration) ||
|
when (declaration) {
|
||||||
declaration is KtProperty && doPropertyMatch(member, declaration, setter))
|
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? {
|
private fun getJvmName(declaration: KtDeclaration?): String? {
|
||||||
if (declaration == null) return null
|
if (declaration == null) return null
|
||||||
val annotationEntry = declaration.annotationEntries.firstOrNull {
|
val annotationEntry = declaration.annotationEntries.firstOrNull {
|
||||||
|
|||||||
Reference in New Issue
Block a user