Serialize and deserialize const val's properly for K2 klib

#KT-57312 Fixed
This commit is contained in:
Ivan Kylchik
2023-03-09 14:47:32 +01:00
committed by Space Team
parent 23b23d5a1e
commit 32297c0f21
17 changed files with 176 additions and 55 deletions
@@ -24,9 +24,7 @@ import org.jetbrains.kotlin.diagnostics.impl.PendingDiagnosticsCollectorWithSupp
import org.jetbrains.kotlin.fir.BinaryModuleData
import org.jetbrains.kotlin.fir.DependencyListForCliModule
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.backend.Fir2IrExtensions
import org.jetbrains.kotlin.fir.backend.Fir2IrVisibilityConverter
import org.jetbrains.kotlin.fir.backend.extractFirDeclarations
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.jvm.FirJvmKotlinMangler
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.descriptors.FirModuleDescriptor
@@ -192,7 +190,10 @@ fun serializeFirKlib(
session,
scopeSession,
actualizedExpectDeclarations,
FirKLibSerializerExtension(session, metadataVersion, FirElementAwareSerializableStringTable()),
FirKLibSerializerExtension(
session, metadataVersion, FirElementAwareSerializableStringTable(),
ConstValueProviderImpl(fir2IrActualizedResult.components),
),
moduleStructure.compilerConfiguration.languageVersionSettings,
)
}
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.fir.pipeline.resolveAndCheckFir
import org.jetbrains.kotlin.fir.serialization.FirElementAwareSerializableStringTable
import org.jetbrains.kotlin.fir.serialization.FirKLibSerializerExtension
import org.jetbrains.kotlin.fir.serialization.serializeSingleFirFile
import org.jetbrains.kotlin.library.*
import org.jetbrains.kotlin.library.SerializedMetadata
import org.jetbrains.kotlin.library.metadata.KlibMetadataHeaderFlags
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
import org.jetbrains.kotlin.modules.TargetId
@@ -167,8 +167,10 @@ internal class FirMetadataSerializer(
session,
scopeSession,
actualizedExpectDeclarations = null,
FirKLibSerializerExtension(session, metadataVersion, FirElementAwareSerializableStringTable()),
languageVersionSettings
FirKLibSerializerExtension(
session, metadataVersion, FirElementAwareSerializableStringTable(), constValueProvider = null
),
languageVersionSettings,
)
fragments.getOrPut(firFile.packageFqName.asString()) { mutableListOf() }.add(packageFragment.toByteArray())
}