Add internal compiler argument to change metadata version
Will be used in tests to check how we behave on binaries produced by a "future" compiler
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.js.facade;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys;
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeysKt;
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings;
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||
@@ -42,12 +43,14 @@ import org.jetbrains.kotlin.js.translate.general.AstGenerationResult;
|
||||
import org.jetbrains.kotlin.js.translate.general.Translation;
|
||||
import org.jetbrains.kotlin.js.translate.utils.ExpandIsCallsKt;
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf;
|
||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion;
|
||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus;
|
||||
import org.jetbrains.kotlin.psi.KtFile;
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace;
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics;
|
||||
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil;
|
||||
import org.jetbrains.kotlin.serialization.js.ast.JsAstSerializer;
|
||||
import org.jetbrains.kotlin.utils.JsMetadataVersion;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
@@ -176,9 +179,12 @@ public final class K2JSTranslator {
|
||||
|
||||
List<DeclarationDescriptor> scope = translationResult.getFileMemberScopes().get(file);
|
||||
assert scope != null : "Could not find descriptors for file: " + file;
|
||||
BinaryVersion metadataVersion = config.getConfiguration().get(CommonConfigurationKeys.METADATA_VERSION);
|
||||
ProtoBuf.PackageFragment packagePart = serializationUtil.serializeDescriptors(
|
||||
bindingTrace.getBindingContext(), moduleDescriptor, scope, file.getPackageFqName(),
|
||||
CommonConfigurationKeysKt.getLanguageVersionSettings(config.getConfiguration()));
|
||||
CommonConfigurationKeysKt.getLanguageVersionSettings(config.getConfiguration()),
|
||||
metadataVersion != null ? metadataVersion : JsMetadataVersion.INSTANCE
|
||||
);
|
||||
|
||||
File ioFile = VfsUtilCore.virtualToIoFile(file.getVirtualFile());
|
||||
incrementalResults.processPackagePart(ioFile, packagePart.toByteArray(), binaryAst);
|
||||
|
||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.js.facade
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.openapi.vfs.VfsUtilCore
|
||||
import org.jetbrains.kotlin.backend.common.output.*
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.languageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.js.backend.JsToStringGenerationVisitor
|
||||
@@ -39,6 +40,7 @@ import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||
import org.jetbrains.kotlin.serialization.js.JsModuleDescriptor
|
||||
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
|
||||
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
|
||||
import org.jetbrains.kotlin.utils.JsMetadataVersion
|
||||
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
@@ -109,16 +111,18 @@ abstract class TranslationResult protected constructor(val diagnostics: Diagnost
|
||||
kind = config.moduleKind,
|
||||
imported = importedModules
|
||||
)
|
||||
val settings = config.configuration.languageVersionSettings
|
||||
val serializedMetadata = KotlinJavascriptSerializationUtil.serializeMetadata(bindingContext, moduleDescription, settings)
|
||||
val serializedMetadata = KotlinJavascriptSerializationUtil.serializeMetadata(
|
||||
bindingContext, moduleDescription,
|
||||
config.configuration.languageVersionSettings,
|
||||
config.configuration.get(CommonConfigurationKeys.METADATA_VERSION) as? JsMetadataVersion ?: JsMetadataVersion.INSTANCE
|
||||
)
|
||||
val metaFileContent = serializedMetadata.asString()
|
||||
val sourceFilesForMetaFile = ArrayList(sourceFiles)
|
||||
val jsMetaFile = SimpleOutputFile(sourceFilesForMetaFile, metaFileName, metaFileContent)
|
||||
outputFiles.add(jsMetaFile)
|
||||
|
||||
for (serializedPackage in serializedMetadata.serializedPackages()) {
|
||||
val outputBinaryFile = kjsmFileForPackage(serializedPackage.fqName, serializedPackage.bytes)
|
||||
outputFiles.add(outputBinaryFile)
|
||||
outputFiles.add(kjsmFileForPackage(serializedPackage.fqName, serializedPackage.bytes))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user