[FIR] Handle isProp/setProp synthetic pair properly in Java use-site scope

This commit is contained in:
Mikhail Glukhikh
2020-11-10 18:03:18 +03:00
parent 2725930460
commit 3c48f2eb68
4 changed files with 18 additions and 12 deletions
@@ -147,13 +147,14 @@ class JavaClassUseSiteMemberScope(
if (symbol.fir !is FirJavaClass) {
return super.processFunctionsByName(name, processor)
}
val potentialPropertyName = session.syntheticNamesProvider.propertyNameByAccessorName(name)
?: return super.processFunctionsByName(name, processor)
val potentialPropertyNames = session.syntheticNamesProvider.possiblePropertyNamesByAccessorName(name)
val accessors = mutableListOf<FirAccessorSymbol>()
val getterName = session.syntheticNamesProvider.getterNameBySetterName(name) ?: name
processAccessorFunctionsAndPropertiesByName(potentialPropertyName, listOf(getterName)) {
if (it is FirAccessorSymbol) {
accessors += it
val getterName by lazy { session.syntheticNamesProvider.getterNameBySetterName(name) ?: name }
for (potentialPropertyName in potentialPropertyNames) {
processAccessorFunctionsAndPropertiesByName(potentialPropertyName, listOf(getterName)) {
if (it is FirAccessorSymbol) {
accessors += it
}
}
}
if (accessors.isEmpty()) {