JVM_IR: reconstruct fake overrides after IR deserialization.

We need to keep track of local signatures for deserialized symbols.
This commit is contained in:
Georgy Bronnikov
2021-06-01 16:27:00 +03:00
committed by TeamCityServer
parent a63cc95a2a
commit 7bbc04b6a2
5 changed files with 90 additions and 37 deletions
@@ -42,7 +42,7 @@ class FakeOverrideGlobalDeclarationTable(
fun clear() = table.clear()
}
class FakeOverrideDeclarationTable(
open class FakeOverrideDeclarationTable(
mangler: KotlinMangler.IrMangler,
globalTable: FakeOverrideGlobalDeclarationTable = FakeOverrideGlobalDeclarationTable(mangler)
) : DeclarationTable(globalTable) {
@@ -71,15 +71,14 @@ class FakeOverrideBuilder(
val symbolTable: SymbolTable,
mangler: KotlinMangler.IrMangler,
typeSystem: IrTypeSystemContext,
val platformSpecificClassFilter: FakeOverrideClassFilter = DefaultFakeOverrideClassFilter
val platformSpecificClassFilter: FakeOverrideClassFilter = DefaultFakeOverrideClassFilter,
// TODO: The declaration table is needed for the signaturer.
private val fakeOverrideDeclarationTable: DeclarationTable = FakeOverrideDeclarationTable(mangler),
) : FakeOverrideBuilderStrategy() {
private val haveFakeOverrides = mutableSetOf<IrClass>()
private val irOverridingUtil = IrOverridingUtil(typeSystem, this)
// TODO: The declaration table is needed for the signaturer.
private val fakeOverrideDeclarationTable = FakeOverrideDeclarationTable(mangler)
// private class CompatibilityMode(val oldSignatures: Boolean)
private val fakeOverrideCandidates = mutableMapOf<IrClass, CompatibilityMode>()
@@ -169,7 +168,7 @@ class FakeOverrideBuilder(
}
}
private fun provideFakeOverrides(klass: IrClass, compatibleMode: CompatibilityMode) {
fun provideFakeOverrides(klass: IrClass, compatibleMode: CompatibilityMode) {
buildFakeOverrideChainsForClass(klass, compatibleMode)
irOverridingUtil.clear()
haveFakeOverrides.add(klass)