[IR] Partial linkage fix: Implement abstract fake overrides in non-abstract classes so that there are no call sites that still refer to abstract fake overrides

^KT-53663
This commit is contained in:
Dmitriy Dolovov
2022-08-31 12:10:00 +02:00
parent cb20998d93
commit 71d51801ce
12 changed files with 177 additions and 201 deletions
@@ -336,8 +336,16 @@ internal class KonanIrLinker(
override fun isBuiltInModule(moduleDescriptor: ModuleDescriptor): Boolean = moduleDescriptor.isNativeStdlib()
private val forwardDeclarationDeserializer = forwardModuleDescriptor?.let { KonanForwardDeclarationModuleDeserializer(it) }
override val fakeOverrideBuilder: FakeOverrideBuilder =
FakeOverrideBuilder(this, symbolTable, KonanManglerIr, IrTypeSystemContextImpl(builtIns), friendModules, KonanFakeOverrideClassFilter)
override val fakeOverrideBuilder = FakeOverrideBuilder(
linker = this,
symbolTable = symbolTable,
mangler = KonanManglerIr,
typeSystem = IrTypeSystemContextImpl(builtIns),
friendModules = friendModules,
partialLinkageEnabled = partialLinkageSupport.partialLinkageEnabled,
platformSpecificClassFilter = KonanFakeOverrideClassFilter
)
val moduleDeserializers = mutableMapOf<ModuleDescriptor, KonanPartialModuleDeserializer>()
val klibToModuleDeserializerMap = mutableMapOf<KotlinLibrary, KonanPartialModuleDeserializer>()