[FIR] Use proper FirProvider in the FirKLibSerializerExtension

3aa84906 changed native metadata serialization to use proper platform
  session, but it caused a new bug: FirKLibSerializerExtension uses
  FirProvider from the passed session to get a containing file of
  serialized declaration to put some extension into the metadata. And
  platform session doesn't contain information about any declarations
  except platform ones

So it's needed to use the proper FirProvider in it, which can be
  extracted from Fir2IrComponents. This provider contains providers from
  all sessions that are being compiled plus providers for top-level
  declarations generated by compiler plugins

^KT-65024 Fixed
This commit is contained in:
Dmitriy Novozhilov
2024-01-16 18:39:33 +02:00
committed by Space Team
parent 70d1a2ea8c
commit 0741250b12
5 changed files with 16 additions and 14 deletions
@@ -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
),