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, functionSymbol: FirNamedFunctionSymbol,
containingClass: FirClass, containingClass: FirClass,
processor: (FirNamedFunctionSymbol) -> ProcessorAction processor: (FirNamedFunctionSymbol) -> ProcessorAction
): ProcessorAction = processDirectOverriddenFunctionsWithBaseScope(functionSymbol) { overridden, baseScope -> ): ProcessorAction =
if (overridden.containingClass() == containingClass.symbol.toLookupTag()) { processDirectOverriddenFunctionsWithBaseScope(functionSymbol) { overridden, _ ->
baseScope.processOverriddenFunctionsFromSuperClasses(overridden, containingClass, processor) val unwrapped = if (overridden.fir.isSubstitutionOverride &&
} else { overridden.dispatchReceiverClassOrNull() == containingClass.symbol.toLookupTag()
processor(overridden) )
overridden.originalForSubstitutionOverride!!
else
overridden
processor(unwrapped)
} }
}
fun FirTypeScope.processOverriddenPropertiesFromSuperClasses( fun FirTypeScope.processOverriddenPropertiesFromSuperClasses(
propertySymbol: FirPropertySymbol, propertySymbol: FirPropertySymbol,
containingClass: FirClass, containingClass: FirClass,
processor: (FirPropertySymbol) -> ProcessorAction processor: (FirPropertySymbol) -> ProcessorAction
): ProcessorAction = processDirectOverriddenPropertiesWithBaseScope(propertySymbol) { overridden, baseScope -> ): ProcessorAction =
if (overridden.containingClass() == containingClass.symbol.toLookupTag()) { processDirectOverriddenPropertiesWithBaseScope(propertySymbol) { overridden, _ ->
baseScope.processOverriddenPropertiesFromSuperClasses(overridden, containingClass, processor) val unwrapped = if (overridden.fir.isSubstitutionOverride &&
} else { overridden.dispatchReceiverClassOrNull() == containingClass.symbol.toLookupTag()
processor(overridden) )
overridden.originalForSubstitutionOverride!!
else
overridden
processor(unwrapped)
} }
}
private fun FirClass.getSuperTypesAsIrClasses( private fun FirClass.getSuperTypesAsIrClasses(
declarationStorage: Fir2IrDeclarationStorage 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? 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: 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 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> $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:key index:0 type:K of <root>.MyMap
VALUE_PARAMETER name:value index:1 type:V 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 FUN name:remove visibility:public modality:FINAL <> ($this:<root>.A2, x:kotlin.String) returnType:kotlin.Boolean
overridden: overridden:
public open fun remove (p0: @[EnhancedNullability] E of java.util.ArrayList): kotlin.Boolean declared in java.util.ArrayList 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 $this: VALUE_PARAMETER name:<this> type:<root>.A2
VALUE_PARAMETER name:x index:0 type:kotlin.String VALUE_PARAMETER name:x index:0 type:kotlin.String
BLOCK_BODY BLOCK_BODY