Add BinaryVersion to DeserializationContext
This will be useful to implement version-dependent deserialization, which is needed for gradual fixes of issues in metadata #KT-25120 In Progress
This commit is contained in:
@@ -22,11 +22,15 @@ import java.io.File
|
||||
interface IncrementalDataProvider {
|
||||
/** gets header metadata (serialized [JsProtoBuf.Header]) from previous compilation */
|
||||
val headerMetadata: ByteArray
|
||||
|
||||
/** gets non-dirty package parts data from previous compilation */
|
||||
val compiledPackageParts: Map<File, TranslationResultValue>
|
||||
|
||||
val metadataVersion: IntArray
|
||||
}
|
||||
|
||||
class IncrementalDataProviderImpl(
|
||||
override val headerMetadata: ByteArray,
|
||||
override val compiledPackageParts: Map<File, TranslationResultValue>
|
||||
) : IncrementalDataProvider
|
||||
override val compiledPackageParts: Map<File, TranslationResultValue>,
|
||||
override val metadataVersion: IntArray
|
||||
) : IncrementalDataProvider
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProvid
|
||||
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
|
||||
import org.jetbrains.kotlin.serialization.js.ModuleKind
|
||||
import org.jetbrains.kotlin.serialization.js.PackagesWithHeaderMetadata
|
||||
import org.jetbrains.kotlin.utils.JsMetadataVersion
|
||||
|
||||
object TopDownAnalyzerFacadeForJS {
|
||||
@JvmStatic
|
||||
@@ -85,8 +86,12 @@ object TopDownAnalyzerFacadeForJS {
|
||||
val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: LookupTracker.DO_NOTHING
|
||||
val expectActualTracker = configuration.get(CommonConfigurationKeys.EXPECT_ACTUAL_TRACKER) ?: ExpectActualTracker.DoNothing
|
||||
val languageVersionSettings = configuration.languageVersionSettings
|
||||
val packageFragment = configuration[JSConfigurationKeys.INCREMENTAL_DATA_PROVIDER]?.let {
|
||||
val metadata = PackagesWithHeaderMetadata(it.headerMetadata, it.compiledPackageParts.values.map { it.metadata })
|
||||
val packageFragment = configuration[JSConfigurationKeys.INCREMENTAL_DATA_PROVIDER]?.let { incrementalData ->
|
||||
val metadata = PackagesWithHeaderMetadata(
|
||||
incrementalData.headerMetadata,
|
||||
incrementalData.compiledPackageParts.values.map { it.metadata },
|
||||
JsMetadataVersion(*incrementalData.metadataVersion)
|
||||
)
|
||||
KotlinJavascriptSerializationUtil.readDescriptors(
|
||||
metadata, moduleContext.storageManager, moduleContext.module,
|
||||
CompilerDeserializationConfiguration(languageVersionSettings), lookupTracker
|
||||
|
||||
@@ -250,8 +250,9 @@ public class JsConfig {
|
||||
Name.special("<" + cached.getName() + ">"), storageManager, JsPlatform.INSTANCE.getBuiltIns()
|
||||
);
|
||||
|
||||
KotlinJavaScriptLibraryParts parts = cached.getData();
|
||||
PackageFragmentProvider provider = KotlinJavascriptPackageFragmentProviderKt.createKotlinJavascriptPackageFragmentProvider(
|
||||
storageManager, moduleDescriptor, cached.getData().getHeader(), cached.getData().getBody(),
|
||||
storageManager, moduleDescriptor, parts.getHeader(), parts.getBody(), parts.getMetadataVersion(),
|
||||
new CompilerDeserializationConfiguration(languageVersionSettings),
|
||||
LookupTracker.DO_NOTHING.INSTANCE
|
||||
);
|
||||
@@ -309,9 +310,9 @@ public class JsConfig {
|
||||
);
|
||||
|
||||
LookupTracker lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER, LookupTracker.DO_NOTHING.INSTANCE);
|
||||
KotlinJavaScriptLibraryParts parts = KotlinJavascriptSerializationUtil.readModuleAsProto(m.getBody());
|
||||
KotlinJavaScriptLibraryParts parts = KotlinJavascriptSerializationUtil.readModuleAsProto(m.getBody(), m.getVersion());
|
||||
PackageFragmentProvider provider = KotlinJavascriptPackageFragmentProviderKt.createKotlinJavascriptPackageFragmentProvider(
|
||||
storageManager, moduleDescriptor, parts.getHeader(), parts.getBody(),
|
||||
storageManager, moduleDescriptor, parts.getHeader(), parts.getBody(), m.getVersion(),
|
||||
new CompilerDeserializationConfiguration(languageVersionSettings),
|
||||
lookupTracker
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user