[FIR2IR] Set opt-ins in FakeOverrideGenerator more granular
This commit is contained in:
committed by
Space Team
parent
a11705186f
commit
3c897ab20c
+4
-3
@@ -476,13 +476,14 @@ class FakeOverrideGenerator(
|
|||||||
) { declarationStorage.getIrPropertySymbol(it) as IrPropertySymbol }
|
) { declarationStorage.getIrPropertySymbol(it) as IrPropertySymbol }
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(UnsafeDuringIrConstructionAPI::class)
|
|
||||||
private fun <I : IrDeclaration, S : IrSymbol, F : FirCallableSymbol<*>> getOverriddenSymbolsInSupertypes(
|
private fun <I : IrDeclaration, S : IrSymbol, F : FirCallableSymbol<*>> getOverriddenSymbolsInSupertypes(
|
||||||
declaration: I,
|
declaration: I,
|
||||||
baseSymbols: List<F>,
|
baseSymbols: List<F>,
|
||||||
irProducer: (F) -> S,
|
irProducer: (F) -> S,
|
||||||
): List<S> {
|
): List<S> {
|
||||||
val irClass = declaration.parentAsClass
|
val irClass = declaration.parentAsClass
|
||||||
|
|
||||||
|
@OptIn(UnsafeDuringIrConstructionAPI::class)
|
||||||
val superClasses = irClass.superTypes.mapNotNull { it.classifierOrNull?.owner as? IrClass }.toSet()
|
val superClasses = irClass.superTypes.mapNotNull { it.classifierOrNull?.owner as? IrClass }.toSet()
|
||||||
|
|
||||||
return baseSymbols.flatMap { overridden ->
|
return baseSymbols.flatMap { overridden ->
|
||||||
@@ -490,7 +491,6 @@ class FakeOverrideGenerator(
|
|||||||
}.distinct()
|
}.distinct()
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(UnsafeDuringIrConstructionAPI::class)
|
|
||||||
private fun <F : FirCallableSymbol<*>, S : IrSymbol> getOverriddenSymbolsInSupertypes(
|
private fun <F : FirCallableSymbol<*>, S : IrSymbol> getOverriddenSymbolsInSupertypes(
|
||||||
overridden: F,
|
overridden: F,
|
||||||
superClasses: Set<IrClass>,
|
superClasses: Set<IrClass>,
|
||||||
@@ -499,6 +499,7 @@ class FakeOverrideGenerator(
|
|||||||
val overriddenContainingClass =
|
val overriddenContainingClass =
|
||||||
overridden.containingClassLookupTag()?.toSymbol(session)?.fir as? FirClass ?: return emptyList()
|
overridden.containingClassLookupTag()?.toSymbol(session)?.fir as? FirClass ?: return emptyList()
|
||||||
|
|
||||||
|
@OptIn(UnsafeDuringIrConstructionAPI::class)
|
||||||
val overriddenContainingIrClass =
|
val overriddenContainingIrClass =
|
||||||
declarationStorage.classifierStorage.getOrCreateIrClass(overriddenContainingClass.symbol).symbol.owner
|
declarationStorage.classifierStorage.getOrCreateIrClass(overriddenContainingClass.symbol).symbol.owner
|
||||||
|
|
||||||
@@ -637,9 +638,9 @@ internal fun FirSimpleFunction.generateOverriddenFunctionSymbols(containingClass
|
|||||||
}
|
}
|
||||||
|
|
||||||
context(Fir2IrComponents)
|
context(Fir2IrComponents)
|
||||||
@OptIn(UnsafeDuringIrConstructionAPI::class)
|
|
||||||
private fun FirClass.getSuperTypesAsIrClasses(): Set<IrClass> {
|
private fun FirClass.getSuperTypesAsIrClasses(): Set<IrClass> {
|
||||||
val irClass = declarationStorage.classifierStorage.getOrCreateIrClass(symbol)
|
val irClass = declarationStorage.classifierStorage.getOrCreateIrClass(symbol)
|
||||||
|
|
||||||
|
@OptIn(UnsafeDuringIrConstructionAPI::class)
|
||||||
return irClass.superTypes.mapNotNull { it.classifierOrNull?.owner as? IrClass }.toSet()
|
return irClass.superTypes.mapNotNull { it.classifierOrNull?.owner as? IrClass }.toSet()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user