diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/FakeOverrideRebuilder.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/FakeOverrideRebuilder.kt index 512b133c696..e8e15ba74bc 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/FakeOverrideRebuilder.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/actualizer/FakeOverrideRebuilder.kt @@ -6,8 +6,8 @@ package org.jetbrains.kotlin.backend.common.actualizer import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.declarations.* @@ -70,7 +70,7 @@ class FakeOverrideRebuilder( // Map from the old fake override symbol to the new (rebuilt) symbol. private val fakeOverrideMap = hashMapOf() - private val fakeOverrideBuilder = FakeOverrideBuilder( + private val fakeOverrideBuilder = IrLinkerFakeOverrideProvider( LocalFakeOverridesStorage(), symbolTable, mangler, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt index 32276d3cddd..f408591b9b9 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt @@ -1225,11 +1225,8 @@ val IrFunction.allParameters: List val IrFunction.allParametersCount: Int get() = if (this is IrConstructor) explicitParametersCount + 1 else explicitParametersCount -// This is essentially the same as FakeOverrideBuilder, -// but it bypasses SymbolTable. -// TODO: merge it with FakeOverrideBuilder. -private class FakeOverrideBuilderForLowerings : FakeOverrideBuilderStrategy( - friendModules = emptyMap(), +private object BindToNewEmptySymbols : FakeOverrideBuilderStrategy( + friendModules = emptyMap(), // TODO: this is probably not correct. Should be fixed by KT-61384. But it's not important for current usages unimplementedOverridesStrategy = ProcessAsFakeOverrides ) { override fun linkFunctionFakeOverride(function: IrFunctionWithLateBinding, manglerCompatibleMode: Boolean) { @@ -1259,7 +1256,7 @@ fun IrClass.addFakeOverrides( implementedMembers: List = emptyList(), ignoredParentSymbols: List = emptyList() ) { - IrOverridingUtil(typeSystem, FakeOverrideBuilderForLowerings(), emptyList()) + IrOverridingUtil(typeSystem, BindToNewEmptySymbols, emptyList()) .buildFakeOverridesForClassUsingOverriddenSymbols(this, implementedMembers = implementedMembers, compatibilityMode = false, diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt index 49470d52dfe..ea8a65c8ddf 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/MissingDeclarationStubGenerator.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.backend.common.linkage.partial import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageUtils.guessName -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.DescriptorVisibilities import org.jetbrains.kotlin.descriptors.Modality @@ -28,7 +28,7 @@ import org.jetbrains.kotlin.types.error.ErrorUtils * * Note: This is a special type of [IrProvider]. It should not be used in row with other IR providers, because it may bring to * undesired situation when stubs for unbound fake override symbols are generated even before the corresponding call of - * [FakeOverrideBuilder.provideFakeOverrides] is made leaving no chance for proper linkage of fake overrides. This IR provider + * [IrLinkerFakeOverrideProvider.provideFakeOverrides] is made leaving no chance for proper linkage of fake overrides. This IR provider * should be applied only after the fake overrides generation. */ internal class MissingDeclarationStubGenerator(private val builtIns: IrBuiltIns) : IrProvider { diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinker.kt index 0f57fa87cec..4a550d574e6 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinker.kt @@ -5,7 +5,7 @@ package org.jetbrains.kotlin.backend.common.linkage.partial -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.declarations.IrModuleFragment @@ -32,7 +32,7 @@ interface PartialLinkageSupportForLinker { * Note: Those classifiers that were detected as partially linked are excluded from the fake overrides generation * to avoid failing with `Symbol for is unbound` error or generating fake overrides with incorrect signatures. */ - fun exploreClassifiers(fakeOverrideBuilder: FakeOverrideBuilder) + fun exploreClassifiers(fakeOverrideBuilder: IrLinkerFakeOverrideProvider) /** * For local use only in inline lazy-IR functions. @@ -58,7 +58,7 @@ interface PartialLinkageSupportForLinker { val DISABLED = object : PartialLinkageSupportForLinker { override val isEnabled get() = false override fun shouldBeSkipped(declaration: IrDeclaration) = true - override fun exploreClassifiers(fakeOverrideBuilder: FakeOverrideBuilder) = Unit + override fun exploreClassifiers(fakeOverrideBuilder: IrLinkerFakeOverrideProvider) = Unit override fun exploreClassifiersInInlineLazyIrFunction(function: IrFunction) = Unit override fun generateStubsAndPatchUsages(symbolTable: SymbolTable, roots: () -> Sequence) = Unit override fun generateStubsAndPatchUsages(symbolTable: SymbolTable, root: IrDeclaration) = Unit diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinkerImpl.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinkerImpl.kt index 09344c6ebdf..557d5e0b2c1 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinkerImpl.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/linkage/partial/PartialLinkageSupportForLinkerImpl.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.backend.common.linkage.partial import org.jetbrains.kotlin.backend.common.linkage.issues.PartialLinkageErrorsLogged -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.declarations.IrDeclaration import org.jetbrains.kotlin.ir.declarations.IrFunction @@ -41,7 +41,7 @@ internal class PartialLinkageSupportForLinkerImpl( override fun shouldBeSkipped(declaration: IrDeclaration) = patcher.shouldBeSkipped(declaration) - override fun exploreClassifiers(fakeOverrideBuilder: FakeOverrideBuilder) { + override fun exploreClassifiers(fakeOverrideBuilder: IrLinkerFakeOverrideProvider) { val entries = fakeOverrideBuilder.fakeOverrideCandidates if (entries.isEmpty()) return diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt index b283638484b..2b908f2ad4a 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/overrides/FakeOverrides.kt @@ -23,10 +23,12 @@ import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable import org.jetbrains.kotlin.backend.common.serialization.GlobalDeclarationTable import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureFactory import org.jetbrains.kotlin.backend.common.serialization.signature.PublicIdSignatureComputer +import org.jetbrains.kotlin.ir.IrBuiltIns import org.jetbrains.kotlin.ir.builders.declarations.buildFun import org.jetbrains.kotlin.ir.builders.declarations.buildProperty import org.jetbrains.kotlin.ir.builders.declarations.buildTypeParameter import org.jetbrains.kotlin.ir.declarations.* +import org.jetbrains.kotlin.ir.linkage.partial.IrUnimplementedOverridesStrategy import org.jetbrains.kotlin.ir.linkage.partial.IrUnimplementedOverridesStrategy.ProcessAsFakeOverrides import org.jetbrains.kotlin.ir.overrides.FakeOverrideBuilderStrategy import org.jetbrains.kotlin.ir.overrides.IrExternalOverridabilityCondition @@ -72,64 +74,18 @@ object DefaultFakeOverrideClassFilter : FakeOverrideClassFilter { override fun needToConstructFakeOverrides(clazz: IrClass): Boolean = true } -class FakeOverrideBuilder( +private class IrLinkerFakeOverrideBuilderStrategy( val linker: FileLocalAwareLinker, val symbolTable: SymbolTable, - mangler: KotlinMangler.IrMangler, - typeSystem: IrTypeSystemContext, - friendModules: Map>, + private val irBuiltIns: IrBuiltIns, private val partialLinkageSupport: PartialLinkageSupportForLinker, - val platformSpecificClassFilter: FakeOverrideClassFilter = DefaultFakeOverrideClassFilter, - private val fakeOverrideDeclarationTable: DeclarationTable = FakeOverrideDeclarationTable(mangler) { builder, table -> - IdSignatureFactory(builder, table) - }, - externalOverridabilityConditions: List = emptyList(), + private val fakeOverrideDeclarationTable: DeclarationTable, + friendModules: Map>, + unimplementedOverridesStrategy: IrUnimplementedOverridesStrategy, ) : FakeOverrideBuilderStrategy( friendModules = friendModules, - unimplementedOverridesStrategy = if (partialLinkageSupport.isEnabled) - ImplementAsErrorThrowingStubs(partialLinkageSupport) - else - ProcessAsFakeOverrides + unimplementedOverridesStrategy = unimplementedOverridesStrategy ) { - private val haveFakeOverrides = mutableSetOf() - - private val irOverridingUtil = IrOverridingUtil(typeSystem, this, externalOverridabilityConditions) - private val irBuiltIns = typeSystem.irBuiltIns - - // TODO: The declaration table is needed for the signaturer. -// private val fakeOverrideDeclarationTable = FakeOverrideDeclarationTable(mangler, signatureSerializerFactory) - - val fakeOverrideCandidates = mutableMapOf() - fun enqueueClass(clazz: IrClass, signature: IdSignature, compatibilityMode: CompatibilityMode) { - fakeOverrideDeclarationTable.assumeDeclarationSignature(clazz, signature) - fakeOverrideCandidates[clazz] = compatibilityMode - } - - private fun buildFakeOverrideChainsForClass(clazz: IrClass, compatibilityMode: CompatibilityMode): Boolean { - if (haveFakeOverrides.contains(clazz)) return true - - for (supertype in clazz.superTypes) { - val superClass = supertype.getClass() ?: error("Unexpected super type: ${supertype.render()}") - val mode = fakeOverrideCandidates[superClass] ?: compatibilityMode - if (buildFakeOverrideChainsForClass(superClass, mode)) - haveFakeOverrides.add(superClass) - } - - if (!platformSpecificClassFilter.needToConstructFakeOverrides(clazz)) return false - - buildFakeOverridesForSingleClass(clazz, compatibilityMode) - - return true - } - - fun buildFakeOverridesForSingleClass(clazz: IrClass, compatibilityMode: CompatibilityMode) { - fakeOverrideDeclarationTable.run { - inFile(clazz.fileOrNull) { - irOverridingUtil.buildFakeOverridesForClass(clazz, compatibilityMode.oldSignatures) - } - } - } - override fun linkFunctionFakeOverride(function: IrFunctionWithLateBinding, manglerCompatibleMode: Boolean) { val (signature, symbol) = computeFunctionFakeOverrideSymbol(function, manglerCompatibleMode) @@ -278,6 +234,70 @@ class FakeOverrideBuilder( getter = property.getter?.let { buildFunctionWithDisambiguatedSignature(it) } setter = property.setter?.let { buildFunctionWithDisambiguatedSignature(it) } } +} + +class IrLinkerFakeOverrideProvider( + linker: FileLocalAwareLinker, + symbolTable: SymbolTable, + mangler: KotlinMangler.IrMangler, + typeSystem: IrTypeSystemContext, + friendModules: Map>, + private val partialLinkageSupport: PartialLinkageSupportForLinker, + val platformSpecificClassFilter: FakeOverrideClassFilter = DefaultFakeOverrideClassFilter, + private val fakeOverrideDeclarationTable: DeclarationTable = FakeOverrideDeclarationTable(mangler) { builder, table -> + IdSignatureFactory(builder, table) + }, + externalOverridabilityConditions: List = emptyList(), +) { + private val irOverridingUtil = IrOverridingUtil( + typeSystem, + IrLinkerFakeOverrideBuilderStrategy( + linker, + symbolTable, + typeSystem.irBuiltIns, + partialLinkageSupport, + fakeOverrideDeclarationTable, + friendModules, + if (partialLinkageSupport.isEnabled) + ImplementAsErrorThrowingStubs(partialLinkageSupport) + else + ProcessAsFakeOverrides + ), + externalOverridabilityConditions + ) + + private val haveFakeOverrides = mutableSetOf() + val fakeOverrideCandidates = mutableMapOf() + + fun enqueueClass(clazz: IrClass, signature: IdSignature, compatibilityMode: CompatibilityMode) { + fakeOverrideDeclarationTable.assumeDeclarationSignature(clazz, signature) + fakeOverrideCandidates[clazz] = compatibilityMode + } + + private fun buildFakeOverrideChainsForClass(clazz: IrClass, compatibilityMode: CompatibilityMode): Boolean { + if (haveFakeOverrides.contains(clazz)) return true + + for (supertype in clazz.superTypes) { + val superClass = supertype.getClass() ?: error("Unexpected super type: ${supertype.render()}") + val mode = fakeOverrideCandidates[superClass] ?: compatibilityMode + if (buildFakeOverrideChainsForClass(superClass, mode)) + haveFakeOverrides.add(superClass) + } + + if (!platformSpecificClassFilter.needToConstructFakeOverrides(clazz)) return false + + buildFakeOverridesForSingleClass(clazz, compatibilityMode) + + return true + } + + fun buildFakeOverridesForSingleClass(clazz: IrClass, compatibilityMode: CompatibilityMode) { + fakeOverrideDeclarationTable.run { + inFile(clazz.fileOrNull) { + irOverridingUtil.buildFakeOverridesForClass(clazz, compatibilityMode.oldSignatures) + } + } + } fun provideFakeOverrides(klass: IrClass, compatibilityMode: CompatibilityMode) { buildFakeOverrideChainsForClass(klass, compatibilityMode) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index f425605b0a2..ccbb04260ef 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.linkage.issues.IrDisallowedErrorNode import org.jetbrains.kotlin.backend.common.linkage.issues.IrSymbolTypeMismatchException -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideClassFilter +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.encodings.* import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData.SymbolKind import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData.SymbolKind.* @@ -75,7 +75,7 @@ class IrDeclarationDeserializer( private var deserializeBodies: Boolean, val symbolDeserializer: IrSymbolDeserializer, private val platformFakeOverrideClassFilter: FakeOverrideClassFilter, - private val fakeOverrideBuilder: FakeOverrideBuilder, + private val fakeOverrideBuilder: IrLinkerFakeOverrideProvider, private val compatibilityMode: CompatibilityMode, private val partialLinkageEnabled: Boolean, private val internationService: IrInterningService, diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt index f34dd071a6e..9d28034ab96 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIrLinker.kt @@ -7,8 +7,8 @@ package org.jetbrains.kotlin.backend.common.serialization import org.jetbrains.kotlin.backend.common.linkage.issues.* import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor @@ -47,7 +47,7 @@ abstract class KotlinIrLinker( protected val deserializersForModules = linkedMapOf() - abstract val fakeOverrideBuilder: FakeOverrideBuilder + abstract val fakeOverrideBuilder: IrLinkerFakeOverrideProvider abstract val translationPluginContext: TranslationPluginContext? diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt index 7242365213d..f8fa3e54bb5 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.IrBuiltIns @@ -39,7 +39,7 @@ class JsIrLinker( symbol }) { - override val fakeOverrideBuilder = FakeOverrideBuilder( + override val fakeOverrideBuilder = IrLinkerFakeOverrideProvider( linker = this, symbolTable = symbolTable, mangler = JsManglerIr, diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt index fb41fa252d3..224a6fc71f0 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/deserializeLazyDeclarations.kt @@ -7,9 +7,9 @@ package org.jetbrains.kotlin.backend.jvm.serialization import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker import org.jetbrains.kotlin.backend.common.overrides.DefaultFakeOverrideClassFilter -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideDeclarationTable import org.jetbrains.kotlin.backend.common.overrides.FileLocalAwareLinker +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.backend.common.serialization.signature.IdSignatureFactory @@ -149,8 +149,8 @@ fun makeSimpleFakeOverrideBuilder( symbolTable: SymbolTable, typeSystemContext: IrTypeSystemContext, symbolDeserializer: IrSymbolDeserializer -): FakeOverrideBuilder { - return FakeOverrideBuilder( +): IrLinkerFakeOverrideProvider { + return IrLinkerFakeOverrideProvider( object : FileLocalAwareLinker { override fun tryReferencingPropertyByLocalSignature(parent: IrDeclaration, idSignature: IdSignature): IrPropertySymbol = symbolDeserializer.referencePropertyByLocalSignature(idSignature) diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt index 56a12cf6be6..4fc41c5a2cc 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/ir/backend/jvm/serialization/JvmIrLinker.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.ir.backend.jvm.serialization import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.backend.common.serialization.encodings.BinarySymbolData import org.jetbrains.kotlin.descriptors.* @@ -44,7 +44,7 @@ class JvmIrLinker( private val enableIdSignatures: Boolean, ) : KotlinIrLinker(currentModule, messageLogger, typeSystem.irBuiltIns, symbolTable, emptyList()) { - override val fakeOverrideBuilder = FakeOverrideBuilder( + override val fakeOverrideBuilder = IrLinkerFakeOverrideProvider( linker = this, symbolTable = symbolTable, mangler = JvmIrMangler, diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt index f341d5b20df..771af9a8bd3 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/serialization/KonanIrLinker.kt @@ -18,8 +18,8 @@ package org.jetbrains.kotlin.backend.konan.serialization import org.jetbrains.kotlin.backend.common.linkage.issues.UserVisibleIrModulesSupport import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideClassFilter +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.* import org.jetbrains.kotlin.backend.common.serialization.proto.IdSignature as ProtoIdSignature import org.jetbrains.kotlin.backend.konan.CacheDeserializationStrategy @@ -314,7 +314,7 @@ internal class KonanIrLinker( KonanForwardDeclarationModuleDeserializer(it, this, stubGenerator) } - override val fakeOverrideBuilder = FakeOverrideBuilder( + override val fakeOverrideBuilder = IrLinkerFakeOverrideProvider( linker = this, symbolTable = symbolTable, mangler = KonanManglerIr, diff --git a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt index d0899432c68..534d70b6da9 100644 --- a/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt +++ b/kotlin-native/klib/src/main/kotlin/org/jetbrains/kotlin/cli/klib/main.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.cli.klib // TODO: Extract `library` package as a shared jar? import org.jetbrains.kotlin.backend.common.linkage.partial.PartialLinkageSupportForLinker -import org.jetbrains.kotlin.backend.common.overrides.FakeOverrideBuilder +import org.jetbrains.kotlin.backend.common.overrides.IrLinkerFakeOverrideProvider import org.jetbrains.kotlin.backend.common.serialization.BasicIrModuleDeserializer import org.jetbrains.kotlin.backend.common.serialization.DeserializationStrategy import org.jetbrains.kotlin.backend.common.serialization.IrModuleDeserializer @@ -194,7 +194,7 @@ class Library(val libraryNameOrPath: String, val requestedRepository: String?, v class KlibToolLinker( module: ModuleDescriptor, irBuiltIns: IrBuiltIns, symbolTable: SymbolTable ) : KotlinIrLinker(module, KlibToolLogger, irBuiltIns, symbolTable, emptyList()) { - override val fakeOverrideBuilder = FakeOverrideBuilder( + override val fakeOverrideBuilder = IrLinkerFakeOverrideProvider( linker = this, symbolTable = symbolTable, mangler = KonanManglerIr,