FIR: cache properties in use-site scope properly
This commit is contained in:
committed by
teamcity
parent
f2c734fc02
commit
6eaeada1e6
+7
-5
@@ -103,16 +103,17 @@ class JavaClassUseSiteMemberScope(
|
||||
return minOf(a, b)
|
||||
}
|
||||
|
||||
override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) {
|
||||
override fun doProcessProperties(name: Name): Collection<FirVariableSymbol<*>> {
|
||||
val fields = mutableSetOf<FirCallableSymbol<*>>()
|
||||
val fieldNames = mutableSetOf<Name>()
|
||||
val result = mutableSetOf<FirVariableSymbol<*>>()
|
||||
|
||||
// fields
|
||||
declaredMemberScope.processPropertiesByName(name) processor@{ variableSymbol ->
|
||||
if (variableSymbol.isStatic) return@processor
|
||||
fields += variableSymbol
|
||||
fieldNames += variableSymbol.fir.name
|
||||
processor(variableSymbol)
|
||||
result += variableSymbol
|
||||
}
|
||||
|
||||
val fromSupertypes = superTypesScope.getProperties(name)
|
||||
@@ -120,7 +121,7 @@ class JavaClassUseSiteMemberScope(
|
||||
for (propertyFromSupertype in fromSupertypes) {
|
||||
if (propertyFromSupertype is FirFieldSymbol) {
|
||||
if (propertyFromSupertype.fir.name !in fieldNames) {
|
||||
processor(propertyFromSupertype)
|
||||
result += propertyFromSupertype
|
||||
}
|
||||
continue
|
||||
}
|
||||
@@ -132,11 +133,12 @@ class JavaClassUseSiteMemberScope(
|
||||
overrideInClass != null -> {
|
||||
directOverriddenProperties.getOrPut(overrideInClass) { mutableListOf() }.add(propertyFromSupertype)
|
||||
overrideByBase[propertyFromSupertype] = overrideInClass
|
||||
processor(overrideInClass)
|
||||
result += overrideInClass
|
||||
}
|
||||
else -> processor(propertyFromSupertype)
|
||||
else -> result += propertyFromSupertype
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
private fun FirVariableSymbol<*>.createOverridePropertyIfExists(
|
||||
|
||||
Reference in New Issue
Block a user