FIR2IR: fix generation of source overridden symbols

This commit makes source overridden and f/o overridden consistent.
This commit is contained in:
Mikhail Glukhikh
2022-02-08 11:40:15 +03:00
committed by Space
parent 74fe603a29
commit 5cec068d36
3 changed files with 20 additions and 15 deletions
@@ -406,25 +406,33 @@ fun FirTypeScope.processOverriddenFunctionsFromSuperClasses(
functionSymbol: FirNamedFunctionSymbol,
containingClass: FirClass,
processor: (FirNamedFunctionSymbol) -> ProcessorAction
): ProcessorAction = processDirectOverriddenFunctionsWithBaseScope(functionSymbol) { overridden, baseScope ->
if (overridden.containingClass() == containingClass.symbol.toLookupTag()) {
baseScope.processOverriddenFunctionsFromSuperClasses(overridden, containingClass, processor)
} else {
processor(overridden)
): ProcessorAction =
processDirectOverriddenFunctionsWithBaseScope(functionSymbol) { overridden, _ ->
val unwrapped = if (overridden.fir.isSubstitutionOverride &&
overridden.dispatchReceiverClassOrNull() == containingClass.symbol.toLookupTag()
)
overridden.originalForSubstitutionOverride!!
else
overridden
processor(unwrapped)
}
}
fun FirTypeScope.processOverriddenPropertiesFromSuperClasses(
propertySymbol: FirPropertySymbol,
containingClass: FirClass,
processor: (FirPropertySymbol) -> ProcessorAction
): ProcessorAction = processDirectOverriddenPropertiesWithBaseScope(propertySymbol) { overridden, baseScope ->
if (overridden.containingClass() == containingClass.symbol.toLookupTag()) {
baseScope.processOverriddenPropertiesFromSuperClasses(overridden, containingClass, processor)
} else {
processor(overridden)
): ProcessorAction =
processDirectOverriddenPropertiesWithBaseScope(propertySymbol) { overridden, _ ->
val unwrapped = if (overridden.fir.isSubstitutionOverride &&
overridden.dispatchReceiverClassOrNull() == containingClass.symbol.toLookupTag()
)
overridden.originalForSubstitutionOverride!!
else
overridden
processor(unwrapped)
}
}
private fun FirClass.getSuperTypesAsIrClasses(
declarationStorage: Fir2IrDeclarationStorage
@@ -12,7 +12,6 @@ FILE fqName:<root> fileName:/AbstractMutableMap.kt
FUN name:put visibility:public modality:FINAL <> ($this:<root>.MyMap<K of <root>.MyMap, V of <root>.MyMap>, key:K of <root>.MyMap, value:V of <root>.MyMap) returnType:V of <root>.MyMap?
overridden:
public abstract fun put (key: K of kotlin.collections.AbstractMutableMap, value: V of kotlin.collections.AbstractMutableMap): V of kotlin.collections.AbstractMutableMap? declared in kotlin.collections.AbstractMutableMap
public open fun put (p0: @[FlexibleNullability] K of kotlin.collections.AbstractMutableMap?, p1: @[FlexibleNullability] V of kotlin.collections.AbstractMutableMap?): V of kotlin.collections.AbstractMutableMap? [fake_override] declared in kotlin.collections.AbstractMutableMap
$this: VALUE_PARAMETER name:<this> type:<root>.MyMap<K of <root>.MyMap, V of <root>.MyMap>
VALUE_PARAMETER name:key index:0 type:K of <root>.MyMap
VALUE_PARAMETER name:value index:1 type:V of <root>.MyMap
@@ -203,8 +203,6 @@ FILE fqName:<root> fileName:/ArrayListOverrides.kt
FUN name:remove visibility:public modality:FINAL <> ($this:<root>.A2, x:kotlin.String) returnType:kotlin.Boolean
overridden:
public open fun remove (p0: @[EnhancedNullability] E of java.util.ArrayList): kotlin.Boolean declared in java.util.ArrayList
public open fun remove (p0: @[FlexibleNullability] E of java.util.ArrayList?): kotlin.Boolean [fake_override] declared in java.util.ArrayList
public abstract fun remove (element: E of java.util.ArrayList): kotlin.Boolean [fake_override] declared in java.util.ArrayList
$this: VALUE_PARAMETER name:<this> type:<root>.A2
VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY