diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt index a0e027ac2df..89cbedbd9b3 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/klib/compilerPipeline.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.languageVersionSettings -import org.jetbrains.kotlin.constant.EvaluatedConstTracker import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSuppress @@ -263,7 +262,7 @@ private class Fir2KlibSerializer( private val firFilesAndSessionsBySourceFile = buildMap { for (output in firOutputs) { output.fir.forEach { - put(it.sourceFile!!, Triple(it, output.session, output.scopeSession)) + put(it.sourceFile!!, it) } } } @@ -279,19 +278,20 @@ private class Fir2KlibSerializer( val sourceFiles: List = firFilesAndSessionsBySourceFile.keys.toList() fun serializeSingleFirFile(file: KtSourceFile): ProtoBuf.PackageFragment { - val (firFile, session, scopeSession) = firFilesAndSessionsBySourceFile[file] + val firFile = firFilesAndSessionsBySourceFile[file] ?: error("cannot find FIR file by source file ${file.name} (${file.path})") + val components = fir2IrActualizedResult.components return serializeSingleFirFile( firFile, - session, - scopeSession, + components.session, + components.scopeSession, actualizedExpectDeclarations, FirKLibSerializerExtension( - session, metadataVersion, - ConstValueProviderImpl(fir2IrActualizedResult.components), + components.session, components.firProvider, metadataVersion, + ConstValueProviderImpl(components), allowErrorTypes = false, exportKDoc = false, - fir2IrActualizedResult.components.annotationsFromPluginRegistrar.createAdditionalMetadataProvider() + components.annotationsFromPluginRegistrar.createAdditionalMetadataProvider() ), languageVersionSettings, ) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt index f1124d479b1..8f61965694c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/FirMetadataSerializer.kt @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.fir.pipeline.ModuleCompilerAnalyzedOutput import org.jetbrains.kotlin.fir.pipeline.buildFirFromKtFiles import org.jetbrains.kotlin.fir.pipeline.buildFirViaLightTree import org.jetbrains.kotlin.fir.pipeline.resolveAndCheckFir +import org.jetbrains.kotlin.fir.resolve.providers.firProvider import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile import org.jetbrains.kotlin.library.SerializedMetadata @@ -173,7 +174,7 @@ internal class FirMetadataSerializer( scopeSession, actualizedExpectDeclarations = null, FirKLibSerializerExtension( - session, metadataVersion, constValueProvider = null, + session, session.firProvider, metadataVersion, constValueProvider = null, allowErrorTypes = false, exportKDoc = false, additionalMetadataProvider = null ), diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirKLibSerializerExtension.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirKLibSerializerExtension.kt index efcb41e785c..e82151c7db0 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirKLibSerializerExtension.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirKLibSerializerExtension.kt @@ -9,7 +9,7 @@ import com.intellij.lang.LighterASTNode import com.intellij.openapi.util.Ref import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.resolve.providers.firProvider +import org.jetbrains.kotlin.fir.resolve.providers.FirProvider import org.jetbrains.kotlin.fir.serialization.constant.ConstValueProvider import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.serialization.deserialization.DYNAMIC_TYPE_DESERIALI class FirKLibSerializerExtension( override val session: FirSession, + private val firProvider: FirProvider, override val metadataVersion: BinaryVersion, override val constValueProvider: ConstValueProvider?, private val allowErrorTypes: Boolean, @@ -85,8 +86,6 @@ class FirKLibSerializerExtension( super.serializeFunction(function, proto, versionRequirementTable, childSerializer) } - private val firProvider = session.firProvider - @Suppress("Reformat") private fun < MessageType : GeneratedMessageLite.ExtendableMessage, diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsWasmResultsConverter.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsWasmResultsConverter.kt index 9ccec605a75..4cc76b40af9 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsWasmResultsConverter.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/fir/Fir2IrJsWasmResultsConverter.kt @@ -96,7 +96,7 @@ abstract class Fir2IrJsWasmResultsConverter(testServices: TestServices) : Abstra components.scopeSession, actualizedExpectDeclarations, FirKLibSerializerExtension( - components.session, metadataVersion, + components.session, components.firProvider, metadataVersion, ConstValueProviderImpl(components), allowErrorTypes = false, exportKDoc = false, components.annotationsFromPluginRegistrar.createAdditionalMetadataProvider() diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt index 5d87acc9bbf..3340e5da8ad 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/FirNativeSerializer.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.packageFqName import org.jetbrains.kotlin.fir.pipeline.FirResult import org.jetbrains.kotlin.fir.resolve.ScopeSession +import org.jetbrains.kotlin.fir.resolve.providers.firProvider import org.jetbrains.kotlin.fir.serialization.* import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.util.IrMessageLogger @@ -87,13 +88,14 @@ internal fun PhaseContext.firSerializerBase( ) { firFile, originalSession, originalScopeSession -> val session = fir2IrOutput?.components?.session ?: originalSession val scopeSession = fir2IrOutput?.components?.scopeSession ?: originalScopeSession + val firProvider = fir2IrOutput?.components?.firProvider ?: originalSession.firProvider serializeSingleFirFile( firFile, session, scopeSession, actualizedFirDeclarations, FirKLibSerializerExtension( - session, metadataVersion, + session, firProvider, metadataVersion, fir2IrOutput?.let { ConstValueProviderImpl(fir2IrOutput.components) },