diff --git a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt index a885ae57838..f2bfe5b23f1 100644 --- a/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt +++ b/compiler/ir/backend.jvm/entrypoint/src/org/jetbrains/kotlin/backend/jvm/JvmIrCodegenFactory.kt @@ -128,7 +128,7 @@ open class JvmIrCodegenFactory( val extensions: JvmGeneratorExtensions, val backendExtension: JvmBackendExtension, val pluginContext: IrPluginContext?, - val notifyCodegenStart: () -> Unit + val notifyCodegenStart: () -> Unit, ) : CodegenFactory.BackendInput private data class JvmIrCodegenInput( @@ -317,11 +317,11 @@ open class JvmIrCodegenFactory( val moduleChunk = sourceFiles.toSet() val wholeModule = wholeBackendInput.irModuleFragment - return wholeBackendInput.copy( - IrModuleFragmentImpl(wholeModule.descriptor, wholeModule.irBuiltins, wholeModule.files.filter { file -> - file.getKtFile() in moduleChunk - }) - ) + val moduleCopy = IrModuleFragmentImpl(wholeModule.descriptor, wholeModule.irBuiltins) + wholeModule.files.filterTo(moduleCopy.files) { file -> + file.getKtFile() in moduleChunk + } + return wholeBackendInput.copy(moduleCopy) } override fun invokeLowerings(state: GenerationState, input: CodegenFactory.BackendInput): CodegenFactory.CodegenInput { @@ -428,7 +428,7 @@ open class JvmIrCodegenFactory( extensions: JvmGeneratorExtensions, backendExtension: JvmBackendExtension, irPluginContext: IrPluginContext, - notifyCodegenStart: () -> Unit = {} + notifyCodegenStart: () -> Unit = {}, ) { generateModule( state, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrModuleFragmentImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrModuleFragmentImpl.kt index 4194cb9a45f..49ab71e8784 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrModuleFragmentImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/impl/IrModuleFragmentImpl.kt @@ -26,7 +26,6 @@ import org.jetbrains.kotlin.name.Name class IrModuleFragmentImpl( override val descriptor: ModuleDescriptor, override val irBuiltins: IrBuiltIns, - files: List = emptyList(), ) : IrModuleFragment() { override val startOffset: Int get() = UNDEFINED_OFFSET @@ -36,5 +35,5 @@ class IrModuleFragmentImpl( override val name: Name get() = descriptor.name - override val files: MutableList = files.toMutableList() + override val files: MutableList = ArrayList() } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt index f390b169062..e02d82fc37e 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/BasicIrModuleDeserializer.kt @@ -96,7 +96,7 @@ abstract class BasicIrModuleDeserializer( error("No file for ${idSig.topLevelSignature()} (@ $idSig) in module $moduleDescriptor") } - override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, linker.builtIns, emptyList()) + override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, linker.builtIns) private fun deserializeIrFile( fileProto: ProtoFile, file: IrFile, fileReader: IrLibraryFileFromBytes, diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsLazyIrModuleDeserializer.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsLazyIrModuleDeserializer.kt index a80b64384f9..f3753d81bef 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsLazyIrModuleDeserializer.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsLazyIrModuleDeserializer.kt @@ -78,7 +78,7 @@ class JsLazyIrModuleDeserializer( } - override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns, emptyList()) + override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns) override val moduleDependencies: Collection = dependencies override val kind get() = IrModuleDeserializerKind.SYNTHETIC 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 4fc41c5a2cc..0ce492711f2 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 @@ -171,7 +171,7 @@ class JvmIrLinker( } } - override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns, emptyList()) + override val moduleFragment: IrModuleFragment = IrModuleFragmentImpl(moduleDescriptor, builtIns) override val moduleDependencies: Collection = dependencies override val kind get() = IrModuleDeserializerKind.SYNTHETIC diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt index dfaa633499f..1709d346973 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/driver/phases/TopLevelPhases.kt @@ -198,7 +198,8 @@ private fun PhaseEngine.splitIntoFragments( containsStdlib = containsStdlib ) val dependenciesTracker = DependenciesTrackerImpl(llvmModuleSpecification, context.config, context) - val fragment = IrModuleFragmentImpl(input.descriptor, input.irBuiltins, listOf(file)) + val fragment = IrModuleFragmentImpl(input.descriptor, input.irBuiltins) + fragment.files += file if (containsStdlib && cacheDeserializationStrategy.containsKFunctionImpl) fragment.files += files.filter { it.isFunctionInterfaceFile }