From 5384f23f30345959764e1ca057f49af51776f072 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 25 Jan 2019 19:56:20 +0300 Subject: [PATCH] [JS IR BE] Extract metadata deserializer to keep binary compatibility * add UniqId extension to metadata protobuf --- .../kotlin/ir/backend/js/compiler.kt | 95 + .../metadata/DynamicTypeDeserializer.kt | 31 + .../metadata/JsKlibFileMetadata.kt | 17 + .../metadata/JsKlibMetadataFileRegistry.kt | 16 + .../JsKlibMetadataFragmentProvider.kt | 86 + .../JsKlibMetadataModuleDescriptor.kt | 12 + .../metadata/JsKlibMetadataPackageFragment.kt | 75 + .../metadata/JsKlibMetadataProtoBuf.java | 4223 +++++++++++++++++ .../JsKlibMetadataSerializationUtil.kt | 251 + .../JsKlibMetadataSerializerExtension.kt | 118 + .../JsKlibMetadataSerializerProtocol.kt | 35 + .../metadata/JsKlibMetadataStringTable.kt | 34 + .../metadata/JsKlibMetadataVersion.kt | 39 + .../js/lower/serialization/metadata/js.proto | 122 + .../generators/protobuf/GenerateProtoBuf.kt | 3 +- .../generators/tests/GenerateIrRuntime.kt | 4 +- 16 files changed, 5158 insertions(+), 3 deletions(-) create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataModuleDescriptor.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataVersion.kt create mode 100644 compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/js.proto diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt index 8b07910854e..c55074d7666 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt @@ -6,21 +6,40 @@ package org.jetbrains.kotlin.ir.backend.js import com.intellij.openapi.project.Project +import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.vfs.VfsUtilCore +import org.jetbrains.kotlin.backend.common.CompilerPhaseManager +import org.jetbrains.kotlin.backend.common.output.OutputFile +import org.jetbrains.kotlin.backend.common.output.OutputFileCollection +import org.jetbrains.kotlin.backend.common.output.SimpleOutputBinaryFile +import org.jetbrains.kotlin.backend.common.output.SimpleOutputFileCollection +import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.* import org.jetbrains.kotlin.ir.backend.js.lower.coroutines.CoroutineIntrinsicLowering import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.IrModuleToJsTransformer import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS +import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration +import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol +import org.jetbrains.kotlin.storage.LockBasedStorageManager +import org.jetbrains.kotlin.utils.JsMetadataVersion +import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils +import java.io.File import org.jetbrains.kotlin.utils.DFS enum class ModuleType { @@ -40,6 +59,13 @@ class CompiledModule( get() = moduleFragment!!.descriptor as ModuleDescriptorImpl } +fun OutputFileCollection.writeAll(outputDir: File) { + for (file in asList()) { + val output = File(outputDir, file.relativePath) + FileUtil.writeToFile(output, file.asByteArray()) + } +} + fun compile( project: Project, files: List, @@ -91,6 +117,75 @@ fun compile( // val serializedData = serializer.serializeModule(analysisResult.moduleDescriptor, serializedIr) // buildLibrary(serializedData) // + +// val declarationTable = DeclarationTable(moduleFragment.irBuiltins, DescriptorTable()) +// val serializedIr = IrModuleSerializer(context, declarationTable/*, onlyForInlines = false*/).serializedIrModule(moduleFragment) + val serializer = JsKlibMetadataSerializationUtil +// val serializedData = serializer.serializeModule(analysisResult.moduleDescriptor, serializedIr) + val moduleName = configuration.get(CommonConfigurationKeys.MODULE_NAME) as String + val metadataVersion = configuration.get(CommonConfigurationKeys.METADATA_VERSION) as? JsKlibMetadataVersion + ?: JsKlibMetadataVersion.INSTANCE + val moduleDescription = + JsKlibMetadataModuleDescriptor(moduleName, dependencies.map { it.name.asString() }, moduleFragment.descriptor) + var index = 0L + val serializedData = serializer.serializeMetadata( + psi2IrContext.bindingContext, + moduleDescription, + configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS)!!, + metadataVersion + ) { +// val index = declarationTable.descriptorTable.get(it) +// index?.let { newDescriptorUniqId(it) } + JsKlibMetadataProtoBuf.DescriptorUniqId.newBuilder().setIndex(index++).build() + + } +// buildLibrary(serializedData) +// + + val stdKlibDir = File("js/js.translator/testData/out/klibs/runtime/").also { + it.deleteRecursively() + it.mkdirs() + } +// +// val moduleFile = File(stdKlibDir, "module.kji") +// moduleFile.writeBytes(serializedIr.module) +// +// for ((id, data) in serializedIr.declarations) { +// val file = File(stdKlibDir, "${id.index}${if (id.isLocal) "L" else "G"}.kjd") +// file.writeBytes(data) +// } +// +// +// val debugFile = File(stdKlibDir, "debug.txt") +// +// for ((id, data) in serializedIr.debugIndex) { +// debugFile.appendText(id.toString()) +// debugFile.appendText(" --- ") +// debugFile.appendText(data) +// debugFile.appendText("\n") +// } + + val metadata = File(stdKlibDir, "${moduleDescription.name}${JsKlibMetadataSerializationUtil.CLASS_METADATA_FILE_EXTENSION}").also { + it.writeBytes(serializedData.asByteArray()) + } + + val storageManager = LockBasedStorageManager("JsConfig") +// // CREATE NEW MODULE DESCRIPTOR HERE AND DESERIALIZE IT + + val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER, LookupTracker.DO_NOTHING) + val parts = serializer.readModuleAsProto(metadata.readBytes()) + val md = ModuleDescriptorImpl( + Name.special("<$moduleName>"), storageManager, JsPlatform.builtIns + ) + val provider = createJsKlibMetadataPackageFragmentProvider( + storageManager, md, parts.header, parts.body, metadataVersion, + CompilerDeserializationConfiguration(configuration.languageVersionSettings), + lookupTracker + ) + + md.initialize(provider) + md.setDependencies(listOf(md, md.builtIns.builtInsModule)) + TODO("Implemenet IrSerialization") } else { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt new file mode 100644 index 00000000000..e307e723fcb --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt @@ -0,0 +1,31 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeDeserializer +import org.jetbrains.kotlin.types.ErrorUtils +import org.jetbrains.kotlin.types.KotlinType +import org.jetbrains.kotlin.types.SimpleType +import org.jetbrains.kotlin.types.checker.StrictEqualityTypeChecker +import org.jetbrains.kotlin.types.createDynamicType +import org.jetbrains.kotlin.types.typeUtil.builtIns + +object DynamicTypeDeserializer : FlexibleTypeDeserializer { + const val id = "kotlin.DynamicType" + + override fun create(proto: ProtoBuf.Type, flexibleId: String, lowerBound: SimpleType, upperBound: SimpleType): KotlinType { + if (flexibleId != id) return ErrorUtils.createErrorType("Unexpected id: $flexibleId. ($lowerBound..$upperBound)") + + return if (StrictEqualityTypeChecker.strictEqualTypes(lowerBound, lowerBound.builtIns.nothingType) && + StrictEqualityTypeChecker.strictEqualTypes(upperBound, upperBound.builtIns.nullableAnyType) + ) { + createDynamicType(lowerBound.builtIns) + } else { + ErrorUtils.createErrorType("Illegal type range for dynamic type: $lowerBound..$upperBound") + } + } +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt new file mode 100644 index 00000000000..6e4fb922b18 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.psi.KtFile + +sealed class JsKlibFileMetadata + +data class KotlinPsiFileMetadata(val ktFile: KtFile) : JsKlibFileMetadata() + +data class KotlinDeserializedFileMetadata( + val packageFragment: JsKlibMetadataPackageFragment, + val fileId: Int +) : JsKlibFileMetadata() diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt new file mode 100644 index 00000000000..c8c1a926cd0 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + + +class JsKlibMetadataFileRegistry { + private val fileIdsImpl = mutableMapOf() + + fun lookup(file: JsKlibFileMetadata) = fileIdsImpl.getOrPut(file) { fileIdsImpl.size } + + val fileIds: Map + get() = fileIdsImpl +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt new file mode 100644 index 00000000000..0ce7a1208e4 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt @@ -0,0 +1,86 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.contracts.ContractDeserializerImpl +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentDeclarationFilter +import org.jetbrains.kotlin.descriptors.impl.EmptyPackageFragmentDescriptor +import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.parentOrNull +import org.jetbrains.kotlin.serialization.deserialization.* +import org.jetbrains.kotlin.storage.StorageManager + +fun createJsKlibMetadataPackageFragmentProvider( + storageManager: StorageManager, + module: ModuleDescriptor, + header: JsKlibMetadataProtoBuf.Header, + packageFragmentProtos: List, + metadataVersion: JsKlibMetadataVersion, + configuration: DeserializationConfiguration, + lookupTracker: LookupTracker +): PackageFragmentProvider { + val packageFragments: MutableList = packageFragmentProtos.mapNotNullTo(mutableListOf()) { proto -> + proto.fqName?.let { fqName -> + JsKlibMetadataPackageFragment(fqName, storageManager, module, proto, header, metadataVersion, configuration) + } + } + + // Generate empty PackageFragmentDescriptor instances for packages that aren't mentioned in compilation units directly. + // For example, if there's `package foo.bar` directive, we'll get only PackageFragmentDescriptor for `foo.bar`, but + // none for `foo`. Various descriptor/scope code relies on presence of such package fragments, and currently we + // don't know if it's possible to fix this. + // TODO: think about fixing issues in descriptors/scopes + val packageFqNames = packageFragmentProtos.mapNotNullTo(mutableSetOf()) { it.fqName } + for (packageFqName in packageFqNames.mapNotNull { it.parentOrNull() }) { + var ancestorFqName = packageFqName + while (!ancestorFqName.isRoot && packageFqNames.add(ancestorFqName)) { + packageFragments += EmptyPackageFragmentDescriptor(module, ancestorFqName) + ancestorFqName = ancestorFqName.parent() + } + } + + val provider = PackageFragmentProviderImpl(packageFragments) + + val notFoundClasses = NotFoundClasses(storageManager, module) + + val components = DeserializationComponents( + storageManager, + module, + configuration, + DeserializedClassDataFinder(provider), + AnnotationAndConstantLoaderImpl(module, notFoundClasses, JsKlibMetadataSerializerProtocol), + provider, + LocalClassifierTypeSettings.Default, + ErrorReporter.DO_NOTHING, + lookupTracker, + DynamicTypeDeserializer, + emptyList(), + notFoundClasses, + ContractDeserializerImpl(configuration, storageManager), + platformDependentDeclarationFilter = PlatformDependentDeclarationFilter.NoPlatformDependent, + extensionRegistryLite = JsKlibMetadataSerializerProtocol.extensionRegistry + ) + + for (packageFragment in packageFragments.filterIsInstance()) { + packageFragment.initialize(components) + } + + return provider +} + +private val ProtoBuf.PackageFragment.fqName: FqName? + get() { + val nameResolver = NameResolverImpl(strings, qualifiedNames) + return when { + hasPackage() -> FqName(nameResolver.getPackageFqName(`package`.getExtension(JsKlibMetadataProtoBuf.packageFqName))) + class_Count > 0 -> nameResolver.getClassId(class_OrBuilderList.first().fqName).packageFqName + else -> null + } + } \ No newline at end of file diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataModuleDescriptor.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataModuleDescriptor.kt new file mode 100644 index 00000000000..a93106929e9 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataModuleDescriptor.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +class JsKlibMetadataModuleDescriptor( + val name: String, + val imported: List, + val data: T +) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt new file mode 100644 index 00000000000..cff71c13453 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt @@ -0,0 +1,75 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.SourceFile +import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.serialization.deserialization.* +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource +import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.storage.getValue + +class JsKlibMetadataPackageFragment( + fqName: FqName, + storageManager: StorageManager, + module: ModuleDescriptor, + proto: ProtoBuf.PackageFragment, + header: JsKlibMetadataProtoBuf.Header, + metadataVersion: JsKlibMetadataVersion, + configuration: DeserializationConfiguration +) : DeserializedPackageFragmentImpl( + fqName, storageManager, module, proto, metadataVersion, JsContainerSource(fqName, header, configuration) +) { + val fileMap: Map = + proto.getExtension(JsKlibMetadataProtoBuf.packageFragmentFiles).fileList.withIndex().associate { (index, file) -> + (if (file.hasId()) file.id else index) to FileHolder(file.annotationList) + } + + private lateinit var annotationDeserializer: AnnotationDeserializer + + override fun initialize(components: DeserializationComponents) { + super.initialize(components) + this.annotationDeserializer = AnnotationDeserializer(components.moduleDescriptor, components.notFoundClasses) + } + + inner class FileHolder(private val annotationsProto: List) { + val annotations: List by storageManager.createLazyValue { + annotationsProto.map { annotationDeserializer.deserializeAnnotation(it, nameResolver) } + } + } + + class JsContainerSource( + private val fqName: FqName, + header: JsKlibMetadataProtoBuf.Header, + configuration: DeserializationConfiguration + ) : DeserializedContainerSource { + val annotations: List = + if (header.annotationCount == 0) emptyList() + else NameResolverImpl(header.strings, header.qualifiedNames).let { nameResolver -> + // TODO: read arguments of module annotations + header.annotationList.map { annotation -> nameResolver.getClassId(annotation.id) } + } + + // TODO + override fun getContainingFile(): SourceFile = SourceFile.NO_SOURCE_FILE + + // This is null because we look for incompatible libraries in dependencies in the beginning of the compilation anyway, + // and refuse to compile against them completely + override val incompatibility: IncompatibleVersionErrorData<*>? + get() = null + + override val isPreReleaseInvisible: Boolean = + configuration.reportErrorsOnPreReleaseDependencies && (header.flags and 1) != 0 + + override val presentableString: String + get() = "Package '$fqName'" + } +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java new file mode 100644 index 00000000000..aa785f89e3f --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java @@ -0,0 +1,4223 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/js.proto + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata; + +public final class JsKlibMetadataProtoBuf { + private JsKlibMetadataProtoBuf() {} + public static void registerAllExtensions( + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) { + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.packageFqName); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.classAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.classContainingFileId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.classUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.constructorAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.constructorUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.functionAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.functionContainingFileId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.functionUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.propertyAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.propertyGetterAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.propertySetterAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.compileTimeValue); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.propertyContainingFileId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.propertyUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.enumEntryAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.enumEntryUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.parameterAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.valueParamUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeParameterAnnotation); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeParamUniqId); + registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.packageFragmentFiles); + } + public interface HeaderOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * optional int32 flags = 1; + * + *
+     *preRelease
+     * 
+ */ + boolean hasFlags(); + /** + * optional int32 flags = 1; + * + *
+     *preRelease
+     * 
+ */ + int getFlags(); + + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+     * (patch << 16) + (minor << 8) + major
+     * 
+ */ + boolean hasJsCodeBinaryVersion(); + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+     * (patch << 16) + (minor << 8) + major
+     * 
+ */ + int getJsCodeBinaryVersion(); + + /** + * optional string package_fq_name = 3; + */ + boolean hasPackageFqName(); + /** + * optional string package_fq_name = 3; + */ + java.lang.String getPackageFqName(); + /** + * optional string package_fq_name = 3; + */ + org.jetbrains.kotlin.protobuf.ByteString + getPackageFqNameBytes(); + + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + boolean hasStrings(); + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStrings(); + + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + boolean hasQualifiedNames(); + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNames(); + + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + java.util.List + getAnnotationList(); + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index); + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + int getAnnotationCount(); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header} + */ + public static final class Header extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + HeaderOrBuilder { + // Use Header.newBuilder() to construct. + private Header(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Header(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final Header defaultInstance; + public static Header getDefaultInstance() { + return defaultInstance; + } + + public Header getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private Header( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + flags_ = input.readInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + jsCodeBinaryVersion_ = input.readInt32(); + break; + } + case 26: { + org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000004; + packageFqName_ = bs; + break; + } + case 34: { + org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = strings_.toBuilder(); + } + strings_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(strings_); + strings_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + case 42: { + org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = qualifiedNames_.toBuilder(); + } + qualifiedNames_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(qualifiedNames_); + qualifiedNames_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } + case 50: { + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000020; + } + annotation_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.PARSER, extensionRegistry)); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + } + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser
PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser
() { + public Header parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new Header(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser
getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int FLAGS_FIELD_NUMBER = 1; + private int flags_; + /** + * optional int32 flags = 1; + * + *
+     *preRelease
+     * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional int32 flags = 1; + * + *
+     *preRelease
+     * 
+ */ + public int getFlags() { + return flags_; + } + + public static final int JS_CODE_BINARY_VERSION_FIELD_NUMBER = 2; + private int jsCodeBinaryVersion_; + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+     * (patch << 16) + (minor << 8) + major
+     * 
+ */ + public boolean hasJsCodeBinaryVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+     * (patch << 16) + (minor << 8) + major
+     * 
+ */ + public int getJsCodeBinaryVersion() { + return jsCodeBinaryVersion_; + } + + public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 3; + private java.lang.Object packageFqName_; + /** + * optional string package_fq_name = 3; + */ + public boolean hasPackageFqName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string package_fq_name = 3; + */ + public java.lang.String getPackageFqName() { + java.lang.Object ref = packageFqName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + org.jetbrains.kotlin.protobuf.ByteString bs = + (org.jetbrains.kotlin.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + packageFqName_ = s; + } + return s; + } + } + /** + * optional string package_fq_name = 3; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getPackageFqNameBytes() { + java.lang.Object ref = packageFqName_; + if (ref instanceof java.lang.String) { + org.jetbrains.kotlin.protobuf.ByteString b = + org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageFqName_ = b; + return b; + } else { + return (org.jetbrains.kotlin.protobuf.ByteString) ref; + } + } + + public static final int STRINGS_FIELD_NUMBER = 4; + private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable strings_; + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public boolean hasStrings() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStrings() { + return strings_; + } + + public static final int QUALIFIED_NAMES_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable qualifiedNames_; + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public boolean hasQualifiedNames() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNames() { + return qualifiedNames_; + } + + public static final int ANNOTATION_FIELD_NUMBER = 6; + private java.util.List annotation_; + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public java.util.List getAnnotationList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public java.util.List + getAnnotationOrBuilderList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( + int index) { + return annotation_.get(index); + } + + private void initFields() { + flags_ = 0; + jsCodeBinaryVersion_ = 1; + packageFqName_ = ""; + strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); + qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + annotation_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (hasQualifiedNames()) { + if (!getQualifiedNames().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt32(1, flags_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeInt32(2, jsCodeBinaryVersion_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getPackageFqNameBytes()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(4, strings_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, qualifiedNames_); + } + for (int i = 0; i < annotation_.size(); i++) { + output.writeMessage(6, annotation_.get(i)); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(1, flags_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(2, jsCodeBinaryVersion_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeBytesSize(3, getPackageFqNameBytes()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(4, strings_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, qualifiedNames_); + } + for (int i = 0; i < annotation_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(6, annotation_.get(i)); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.HeaderOrBuilder { + // Construct using org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + flags_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + jsCodeBinaryVersion_ = 1; + bitField0_ = (bitField0_ & ~0x00000002); + packageFqName_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000008); + qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000010); + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header getDefaultInstanceForType() { + return org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header.getDefaultInstance(); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header build() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header buildPartial() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header result = new org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.flags_ = flags_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.jsCodeBinaryVersion_ = jsCodeBinaryVersion_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.packageFqName_ = packageFqName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.strings_ = strings_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.qualifiedNames_ = qualifiedNames_; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.annotation_ = annotation_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header other) { + if (other == org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header.getDefaultInstance()) return this; + if (other.hasFlags()) { + setFlags(other.getFlags()); + } + if (other.hasJsCodeBinaryVersion()) { + setJsCodeBinaryVersion(other.getJsCodeBinaryVersion()); + } + if (other.hasPackageFqName()) { + bitField0_ |= 0x00000004; + packageFqName_ = other.packageFqName_; + + } + if (other.hasStrings()) { + mergeStrings(other.getStrings()); + } + if (other.hasQualifiedNames()) { + mergeQualifiedNames(other.getQualifiedNames()); + } + if (!other.annotation_.isEmpty()) { + if (annotation_.isEmpty()) { + annotation_ = other.annotation_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureAnnotationIsMutable(); + annotation_.addAll(other.annotation_); + } + + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + if (hasQualifiedNames()) { + if (!getQualifiedNames().isInitialized()) { + + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int flags_ ; + /** + * optional int32 flags = 1; + * + *
+       *preRelease
+       * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional int32 flags = 1; + * + *
+       *preRelease
+       * 
+ */ + public int getFlags() { + return flags_; + } + /** + * optional int32 flags = 1; + * + *
+       *preRelease
+       * 
+ */ + public Builder setFlags(int value) { + bitField0_ |= 0x00000001; + flags_ = value; + + return this; + } + /** + * optional int32 flags = 1; + * + *
+       *preRelease
+       * 
+ */ + public Builder clearFlags() { + bitField0_ = (bitField0_ & ~0x00000001); + flags_ = 0; + + return this; + } + + private int jsCodeBinaryVersion_ = 1; + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+       * (patch << 16) + (minor << 8) + major
+       * 
+ */ + public boolean hasJsCodeBinaryVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+       * (patch << 16) + (minor << 8) + major
+       * 
+ */ + public int getJsCodeBinaryVersion() { + return jsCodeBinaryVersion_; + } + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+       * (patch << 16) + (minor << 8) + major
+       * 
+ */ + public Builder setJsCodeBinaryVersion(int value) { + bitField0_ |= 0x00000002; + jsCodeBinaryVersion_ = value; + + return this; + } + /** + * optional int32 js_code_binary_version = 2 [default = 1]; + * + *
+       * (patch << 16) + (minor << 8) + major
+       * 
+ */ + public Builder clearJsCodeBinaryVersion() { + bitField0_ = (bitField0_ & ~0x00000002); + jsCodeBinaryVersion_ = 1; + + return this; + } + + private java.lang.Object packageFqName_ = ""; + /** + * optional string package_fq_name = 3; + */ + public boolean hasPackageFqName() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional string package_fq_name = 3; + */ + public java.lang.String getPackageFqName() { + java.lang.Object ref = packageFqName_; + if (!(ref instanceof java.lang.String)) { + org.jetbrains.kotlin.protobuf.ByteString bs = + (org.jetbrains.kotlin.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + packageFqName_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * optional string package_fq_name = 3; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getPackageFqNameBytes() { + java.lang.Object ref = packageFqName_; + if (ref instanceof String) { + org.jetbrains.kotlin.protobuf.ByteString b = + org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageFqName_ = b; + return b; + } else { + return (org.jetbrains.kotlin.protobuf.ByteString) ref; + } + } + /** + * optional string package_fq_name = 3; + */ + public Builder setPackageFqName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + packageFqName_ = value; + + return this; + } + /** + * optional string package_fq_name = 3; + */ + public Builder clearPackageFqName() { + bitField0_ = (bitField0_ & ~0x00000004); + packageFqName_ = getDefaultInstance().getPackageFqName(); + + return this; + } + /** + * optional string package_fq_name = 3; + */ + public Builder setPackageFqNameBytes( + org.jetbrains.kotlin.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + packageFqName_ = value; + + return this; + } + + private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public boolean hasStrings() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStrings() { + return strings_; + } + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public Builder setStrings(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) { + if (value == null) { + throw new NullPointerException(); + } + strings_ = value; + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public Builder setStrings( + org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder builderForValue) { + strings_ = builderForValue.build(); + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public Builder mergeStrings(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + strings_ != org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance()) { + strings_ = + org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.newBuilder(strings_).mergeFrom(value).buildPartial(); + } else { + strings_ = value; + } + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; + */ + public Builder clearStrings() { + strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public boolean hasQualifiedNames() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getQualifiedNames() { + return qualifiedNames_; + } + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public Builder setQualifiedNames(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) { + if (value == null) { + throw new NullPointerException(); + } + qualifiedNames_ = value; + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public Builder setQualifiedNames( + org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder builderForValue) { + qualifiedNames_ = builderForValue.build(); + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public Builder mergeQualifiedNames(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + qualifiedNames_ != org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance()) { + qualifiedNames_ = + org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.newBuilder(qualifiedNames_).mergeFrom(value).buildPartial(); + } else { + qualifiedNames_ = value; + } + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + */ + public Builder clearQualifiedNames() { + qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + + private java.util.List annotation_ = + java.util.Collections.emptyList(); + private void ensureAnnotationIsMutable() { + if (!((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(annotation_); + bitField0_ |= 0x00000020; + } + } + + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public java.util.List getAnnotationList() { + return java.util.Collections.unmodifiableList(annotation_); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.set(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.set(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.add(builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.add(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAllAnnotation( + java.lang.Iterable values) { + ensureAnnotationIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, annotation_); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder clearAnnotation() { + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder removeAnnotation(int index) { + ensureAnnotationIsMutable(); + annotation_.remove(index); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + } + + static { + defaultInstance = new Header(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + } + + public interface FileOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * optional int32 id = 1; + * + *
+     * If absent, id is the index of the file in the Files.file list
+     * 
+ */ + boolean hasId(); + /** + * optional int32 id = 1; + * + *
+     * If absent, id is the index of the file in the Files.file list
+     * 
+ */ + int getId(); + + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + java.util.List + getAnnotationList(); + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index); + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + int getAnnotationCount(); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File} + */ + public static final class File extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + FileOrBuilder { + // Use File.newBuilder() to construct. + private File(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private File(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final File defaultInstance; + public static File getDefaultInstance() { + return defaultInstance; + } + + public File getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private File( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + id_ = input.readInt32(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + annotation_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + annotation_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.PARSER, extensionRegistry)); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + } + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public File parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new File(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int ID_FIELD_NUMBER = 1; + private int id_; + /** + * optional int32 id = 1; + * + *
+     * If absent, id is the index of the file in the Files.file list
+     * 
+ */ + public boolean hasId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional int32 id = 1; + * + *
+     * If absent, id is the index of the file in the Files.file list
+     * 
+ */ + public int getId() { + return id_; + } + + public static final int ANNOTATION_FIELD_NUMBER = 2; + private java.util.List annotation_; + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public java.util.List getAnnotationList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public java.util.List + getAnnotationOrBuilderList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( + int index) { + return annotation_.get(index); + } + + private void initFields() { + id_ = 0; + annotation_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt32(1, id_); + } + for (int i = 0; i < annotation_.size(); i++) { + output.writeMessage(2, annotation_.get(i)); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(1, id_); + } + for (int i = 0; i < annotation_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(2, annotation_.get(i)); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.FileOrBuilder { + // Construct using org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + id_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getDefaultInstanceForType() { + return org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.getDefaultInstance(); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File build() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File buildPartial() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File result = new org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.id_ = id_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.annotation_ = annotation_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File other) { + if (other == org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.getDefaultInstance()) return this; + if (other.hasId()) { + setId(other.getId()); + } + if (!other.annotation_.isEmpty()) { + if (annotation_.isEmpty()) { + annotation_ = other.annotation_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureAnnotationIsMutable(); + annotation_.addAll(other.annotation_); + } + + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private int id_ ; + /** + * optional int32 id = 1; + * + *
+       * If absent, id is the index of the file in the Files.file list
+       * 
+ */ + public boolean hasId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional int32 id = 1; + * + *
+       * If absent, id is the index of the file in the Files.file list
+       * 
+ */ + public int getId() { + return id_; + } + /** + * optional int32 id = 1; + * + *
+       * If absent, id is the index of the file in the Files.file list
+       * 
+ */ + public Builder setId(int value) { + bitField0_ |= 0x00000001; + id_ = value; + + return this; + } + /** + * optional int32 id = 1; + * + *
+       * If absent, id is the index of the file in the Files.file list
+       * 
+ */ + public Builder clearId() { + bitField0_ = (bitField0_ & ~0x00000001); + id_ = 0; + + return this; + } + + private java.util.List annotation_ = + java.util.Collections.emptyList(); + private void ensureAnnotationIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + annotation_ = new java.util.ArrayList(annotation_); + bitField0_ |= 0x00000002; + } + } + + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public java.util.List getAnnotationList() { + return java.util.Collections.unmodifiableList(annotation_); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.set(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.set(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder addAnnotation(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder addAnnotation( + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.add(builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.add(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder addAllAnnotation( + java.lang.Iterable values) { + ensureAnnotationIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, annotation_); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder clearAnnotation() { + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + */ + public Builder removeAnnotation(int index) { + ensureAnnotationIsMutable(); + annotation_.remove(index); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + } + + static { + defaultInstance = new File(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + } + + public interface FilesOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + java.util.List + getFileList(); + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getFile(int index); + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + int getFileCount(); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files} + */ + public static final class Files extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + FilesOrBuilder { + // Use Files.newBuilder() to construct. + private Files(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Files(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final Files defaultInstance; + public static Files getDefaultInstance() { + return defaultInstance; + } + + public Files getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private Files( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + file_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + file_.add(input.readMessage(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.PARSER, extensionRegistry)); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + file_ = java.util.Collections.unmodifiableList(file_); + } + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public Files parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new Files(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + public static final int FILE_FIELD_NUMBER = 1; + private java.util.List file_; + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public java.util.List getFileList() { + return file_; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public java.util.List + getFileOrBuilderList() { + return file_; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public int getFileCount() { + return file_.size(); + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getFile(int index) { + return file_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.FileOrBuilder getFileOrBuilder( + int index) { + return file_.get(index); + } + + private void initFields() { + file_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + for (int i = 0; i < getFileCount(); i++) { + if (!getFile(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + for (int i = 0; i < file_.size(); i++) { + output.writeMessage(1, file_.get(i)); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < file_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(1, file_.get(i)); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.FilesOrBuilder { + // Construct using org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + file_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files getDefaultInstanceForType() { + return org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.getDefaultInstance(); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files build() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files buildPartial() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files result = new org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + file_ = java.util.Collections.unmodifiableList(file_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.file_ = file_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files other) { + if (other == org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.getDefaultInstance()) return this; + if (!other.file_.isEmpty()) { + if (file_.isEmpty()) { + file_ = other.file_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureFileIsMutable(); + file_.addAll(other.file_); + } + + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + for (int i = 0; i < getFileCount(); i++) { + if (!getFile(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List file_ = + java.util.Collections.emptyList(); + private void ensureFileIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + file_ = new java.util.ArrayList(file_); + bitField0_ |= 0x00000001; + } + } + + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public java.util.List getFileList() { + return java.util.Collections.unmodifiableList(file_); + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public int getFileCount() { + return file_.size(); + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getFile(int index) { + return file_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder setFile( + int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIsMutable(); + file_.set(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder setFile( + int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.Builder builderForValue) { + ensureFileIsMutable(); + file_.set(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder addFile(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIsMutable(); + file_.add(value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder addFile( + int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File value) { + if (value == null) { + throw new NullPointerException(); + } + ensureFileIsMutable(); + file_.add(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder addFile( + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.Builder builderForValue) { + ensureFileIsMutable(); + file_.add(builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder addFile( + int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.Builder builderForValue) { + ensureFileIsMutable(); + file_.add(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder addAllFile( + java.lang.Iterable values) { + ensureFileIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, file_); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder clearFile() { + file_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + */ + public Builder removeFile(int index) { + ensureFileIsMutable(); + file_.remove(index); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + } + + static { + defaultInstance = new Files(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + } + + public interface DescriptorUniqIdOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * required int64 index = 1; + */ + boolean hasIndex(); + /** + * required int64 index = 1; + */ + long getIndex(); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId} + */ + public static final class DescriptorUniqId extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + DescriptorUniqIdOrBuilder { + // Use DescriptorUniqId.newBuilder() to construct. + private DescriptorUniqId(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private DescriptorUniqId(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final DescriptorUniqId defaultInstance; + public static DescriptorUniqId getDefaultInstance() { + return defaultInstance; + } + + public DescriptorUniqId getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private DescriptorUniqId( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + index_ = input.readInt64(); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public DescriptorUniqId parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new DescriptorUniqId(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + public static final int INDEX_FIELD_NUMBER = 1; + private long index_; + /** + * required int64 index = 1; + */ + public boolean hasIndex() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int64 index = 1; + */ + public long getIndex() { + return index_; + } + + private void initFields() { + index_ = 0L; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + if (!hasIndex()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeInt64(1, index_); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt64Size(1, index_); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqIdOrBuilder { + // Construct using org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + index_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId getDefaultInstanceForType() { + return org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId build() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId buildPartial() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId result = new org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.index_ = index_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId other) { + if (other == org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance()) return this; + if (other.hasIndex()) { + setIndex(other.getIndex()); + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + if (!hasIndex()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private long index_ ; + /** + * required int64 index = 1; + */ + public boolean hasIndex() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required int64 index = 1; + */ + public long getIndex() { + return index_; + } + /** + * required int64 index = 1; + */ + public Builder setIndex(long value) { + bitField0_ |= 0x00000001; + index_ = value; + + return this; + } + /** + * required int64 index = 1; + */ + public Builder clearIndex() { + bitField0_ = (bitField0_ & ~0x00000001); + index_ = 0L; + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + } + + static { + defaultInstance = new DescriptorUniqId(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + } + + public interface ClassesOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+     * id in StringTable
+     * 
+ */ + java.util.List getClassNameList(); + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+     * id in StringTable
+     * 
+ */ + int getClassNameCount(); + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+     * id in StringTable
+     * 
+ */ + int getClassName(int index); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes} + */ + public static final class Classes extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes) + ClassesOrBuilder { + // Use Classes.newBuilder() to construct. + private Classes(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Classes(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final Classes defaultInstance; + public static Classes getDefaultInstance() { + return defaultInstance; + } + + public Classes getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private Classes( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + className_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + className_.add(input.readInt32()); + break; + } + case 10: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) { + className_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + while (input.getBytesUntilLimit() > 0) { + className_.add(input.readInt32()); + } + input.popLimit(limit); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + className_ = java.util.Collections.unmodifiableList(className_); + } + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public Classes parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new Classes(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + public static final int CLASS_NAME_FIELD_NUMBER = 1; + private java.util.List className_; + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+     * id in StringTable
+     * 
+ */ + public java.util.List + getClassNameList() { + return className_; + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+     * id in StringTable
+     * 
+ */ + public int getClassNameCount() { + return className_.size(); + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+     * id in StringTable
+     * 
+ */ + public int getClassName(int index) { + return className_.get(index); + } + private int classNameMemoizedSerializedSize = -1; + + private void initFields() { + className_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (getClassNameList().size() > 0) { + output.writeRawVarint32(10); + output.writeRawVarint32(classNameMemoizedSerializedSize); + } + for (int i = 0; i < className_.size(); i++) { + output.writeInt32NoTag(className_.get(i)); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + { + int dataSize = 0; + for (int i = 0; i < className_.size(); i++) { + dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32SizeNoTag(className_.get(i)); + } + size += dataSize; + if (!getClassNameList().isEmpty()) { + size += 1; + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + classNameMemoizedSerializedSize = dataSize; + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes) + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.ClassesOrBuilder { + // Construct using org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + className_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes getDefaultInstanceForType() { + return org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes.getDefaultInstance(); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes build() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes buildPartial() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes result = new org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + className_ = java.util.Collections.unmodifiableList(className_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.className_ = className_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes other) { + if (other == org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes.getDefaultInstance()) return this; + if (!other.className_.isEmpty()) { + if (className_.isEmpty()) { + className_ = other.className_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensureClassNameIsMutable(); + className_.addAll(other.className_); + } + + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Classes) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List className_ = java.util.Collections.emptyList(); + private void ensureClassNameIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + className_ = new java.util.ArrayList(className_); + bitField0_ |= 0x00000001; + } + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public java.util.List + getClassNameList() { + return java.util.Collections.unmodifiableList(className_); + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public int getClassNameCount() { + return className_.size(); + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public int getClassName(int index) { + return className_.get(index); + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public Builder setClassName( + int index, int value) { + ensureClassNameIsMutable(); + className_.set(index, value); + + return this; + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public Builder addClassName(int value) { + ensureClassNameIsMutable(); + className_.add(value); + + return this; + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public Builder addAllClassName( + java.lang.Iterable values) { + ensureClassNameIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, className_); + + return this; + } + /** + * repeated int32 class_name = 1 [packed = true]; + * + *
+       * id in StringTable
+       * 
+ */ + public Builder clearClassName() { + className_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes) + } + + static { + defaultInstance = new Classes(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Classes) + } + + public interface LibraryOrBuilder extends + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library) + org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { + + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + java.util.List + getPackageFragmentList(); + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment getPackageFragment(int index); + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + int getPackageFragmentCount(); + + /** + * repeated string imported_module = 3; + */ + org.jetbrains.kotlin.protobuf.ProtocolStringList + getImportedModuleList(); + /** + * repeated string imported_module = 3; + */ + int getImportedModuleCount(); + /** + * repeated string imported_module = 3; + */ + java.lang.String getImportedModule(int index); + /** + * repeated string imported_module = 3; + */ + org.jetbrains.kotlin.protobuf.ByteString + getImportedModuleBytes(int index); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library} + */ + public static final class Library extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library) + LibraryOrBuilder { + // Use Library.newBuilder() to construct. + private Library(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private Library(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} + + private static final Library defaultInstance; + public static Library getDefaultInstance() { + return defaultInstance; + } + + public Library getDefaultInstanceForType() { + return defaultInstance; + } + + private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; + private Library( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + org.jetbrains.kotlin.protobuf.ByteString.Output unknownFieldsOutput = + org.jetbrains.kotlin.protobuf.ByteString.newOutput(); + org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = + org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( + unknownFieldsOutput, 1); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFieldsCodedOutput, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + packageFragment_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + packageFragment_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.PARSER, extensionRegistry)); + break; + } + case 26: { + org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + importedModule_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + importedModule_.add(bs); + break; + } + } + } + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + packageFragment_ = java.util.Collections.unmodifiableList(packageFragment_); + } + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + importedModule_ = importedModule_.getUnmodifiableView(); + } + try { + unknownFieldsCodedOutput.flush(); + } catch (java.io.IOException e) { + // Should not happen + } finally { + unknownFields = unknownFieldsOutput.toByteString(); + } + makeExtensionsImmutable(); + } + } + public static org.jetbrains.kotlin.protobuf.Parser PARSER = + new org.jetbrains.kotlin.protobuf.AbstractParser() { + public Library parsePartialFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return new Library(input, extensionRegistry); + } + }; + + @java.lang.Override + public org.jetbrains.kotlin.protobuf.Parser getParserForType() { + return PARSER; + } + + public static final int PACKAGE_FRAGMENT_FIELD_NUMBER = 2; + private java.util.List packageFragment_; + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public java.util.List getPackageFragmentList() { + return packageFragment_; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public java.util.List + getPackageFragmentOrBuilderList() { + return packageFragment_; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public int getPackageFragmentCount() { + return packageFragment_.size(); + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment getPackageFragment(int index) { + return packageFragment_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragmentOrBuilder getPackageFragmentOrBuilder( + int index) { + return packageFragment_.get(index); + } + + public static final int IMPORTED_MODULE_FIELD_NUMBER = 3; + private org.jetbrains.kotlin.protobuf.LazyStringList importedModule_; + /** + * repeated string imported_module = 3; + */ + public org.jetbrains.kotlin.protobuf.ProtocolStringList + getImportedModuleList() { + return importedModule_; + } + /** + * repeated string imported_module = 3; + */ + public int getImportedModuleCount() { + return importedModule_.size(); + } + /** + * repeated string imported_module = 3; + */ + public java.lang.String getImportedModule(int index) { + return importedModule_.get(index); + } + /** + * repeated string imported_module = 3; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getImportedModuleBytes(int index) { + return importedModule_.getByteString(index); + } + + private void initFields() { + packageFragment_ = java.util.Collections.emptyList(); + importedModule_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + for (int i = 0; i < getPackageFragmentCount(); i++) { + if (!getPackageFragment(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + for (int i = 0; i < packageFragment_.size(); i++) { + output.writeMessage(2, packageFragment_.get(i)); + } + for (int i = 0; i < importedModule_.size(); i++) { + output.writeBytes(3, importedModule_.getByteString(i)); + } + output.writeRawBytes(unknownFields); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < packageFragment_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(2, packageFragment_.get(i)); + } + { + int dataSize = 0; + for (int i = 0; i < importedModule_.size(); i++) { + dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeBytesSizeNoTag(importedModule_.getByteString(i)); + } + size += dataSize; + size += 1 * getImportedModuleList().size(); + } + size += unknownFields.size(); + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom( + org.jetbrains.kotlin.protobuf.ByteString data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom(byte[] data) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom( + byte[] data, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseDelimitedFrom( + java.io.InputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parseFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library} + */ + public static final class Builder extends + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library, Builder> + implements + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library) + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.LibraryOrBuilder { + // Construct using org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + packageFragment_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + importedModule_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library getDefaultInstanceForType() { + return org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library.getDefaultInstance(); + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library build() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library buildPartial() { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library result = new org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + packageFragment_ = java.util.Collections.unmodifiableList(packageFragment_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.packageFragment_ = packageFragment_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + importedModule_ = importedModule_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.importedModule_ = importedModule_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library other) { + if (other == org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library.getDefaultInstance()) return this; + if (!other.packageFragment_.isEmpty()) { + if (packageFragment_.isEmpty()) { + packageFragment_ = other.packageFragment_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensurePackageFragmentIsMutable(); + packageFragment_.addAll(other.packageFragment_); + } + + } + if (!other.importedModule_.isEmpty()) { + if (importedModule_.isEmpty()) { + importedModule_ = other.importedModule_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureImportedModuleIsMutable(); + importedModule_.addAll(other.importedModule_); + } + + } + setUnknownFields( + getUnknownFields().concat(other.unknownFields)); + return this; + } + + public final boolean isInitialized() { + for (int i = 0; i < getPackageFragmentCount(); i++) { + if (!getPackageFragment(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + org.jetbrains.kotlin.protobuf.CodedInputStream input, + org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Library) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private java.util.List packageFragment_ = + java.util.Collections.emptyList(); + private void ensurePackageFragmentIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + packageFragment_ = new java.util.ArrayList(packageFragment_); + bitField0_ |= 0x00000001; + } + } + + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public java.util.List getPackageFragmentList() { + return java.util.Collections.unmodifiableList(packageFragment_); + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public int getPackageFragmentCount() { + return packageFragment_.size(); + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment getPackageFragment(int index) { + return packageFragment_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder setPackageFragment( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackageFragmentIsMutable(); + packageFragment_.set(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder setPackageFragment( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.Builder builderForValue) { + ensurePackageFragmentIsMutable(); + packageFragment_.set(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder addPackageFragment(org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackageFragmentIsMutable(); + packageFragment_.add(value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder addPackageFragment( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackageFragmentIsMutable(); + packageFragment_.add(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder addPackageFragment( + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.Builder builderForValue) { + ensurePackageFragmentIsMutable(); + packageFragment_.add(builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder addPackageFragment( + int index, org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.Builder builderForValue) { + ensurePackageFragmentIsMutable(); + packageFragment_.add(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder addAllPackageFragment( + java.lang.Iterable values) { + ensurePackageFragmentIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, packageFragment_); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder clearPackageFragment() { + packageFragment_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + */ + public Builder removePackageFragment(int index) { + ensurePackageFragmentIsMutable(); + packageFragment_.remove(index); + + return this; + } + + private org.jetbrains.kotlin.protobuf.LazyStringList importedModule_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + private void ensureImportedModuleIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + importedModule_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(importedModule_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string imported_module = 3; + */ + public org.jetbrains.kotlin.protobuf.ProtocolStringList + getImportedModuleList() { + return importedModule_.getUnmodifiableView(); + } + /** + * repeated string imported_module = 3; + */ + public int getImportedModuleCount() { + return importedModule_.size(); + } + /** + * repeated string imported_module = 3; + */ + public java.lang.String getImportedModule(int index) { + return importedModule_.get(index); + } + /** + * repeated string imported_module = 3; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getImportedModuleBytes(int index) { + return importedModule_.getByteString(index); + } + /** + * repeated string imported_module = 3; + */ + public Builder setImportedModule( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureImportedModuleIsMutable(); + importedModule_.set(index, value); + + return this; + } + /** + * repeated string imported_module = 3; + */ + public Builder addImportedModule( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureImportedModuleIsMutable(); + importedModule_.add(value); + + return this; + } + /** + * repeated string imported_module = 3; + */ + public Builder addAllImportedModule( + java.lang.Iterable values) { + ensureImportedModuleIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, importedModule_); + + return this; + } + /** + * repeated string imported_module = 3; + */ + public Builder clearImportedModule() { + importedModule_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + + return this; + } + /** + * repeated string imported_module = 3; + */ + public Builder addImportedModuleBytes( + org.jetbrains.kotlin.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureImportedModuleIsMutable(); + importedModule_.add(value); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library) + } + + static { + defaultInstance = new Library(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Library) + } + + public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 131; + /** + * extend .org.jetbrains.kotlin.metadata.Package { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Package, + java.lang.Integer> packageFqName = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance(), + 0, + null, + null, + 131, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, + java.lang.Integer.class); + public static final int CLASS_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.Class { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Class, + java.util.List> classAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Class.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int CLASS_CONTAINING_FILE_ID_FIELD_NUMBER = 135; + /** + * extend .org.jetbrains.kotlin.metadata.Class { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Class, + java.lang.Integer> classContainingFileId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Class.getDefaultInstance(), + 0, + null, + null, + 135, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, + java.lang.Integer.class); + public static final int CLASS_UNIQ_ID_FIELD_NUMBER = 136; + /** + * extend .org.jetbrains.kotlin.metadata.Class { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Class, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> classUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Class.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 136, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int CONSTRUCTOR_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.Constructor { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Constructor, + java.util.List> constructorAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int CONSTRUCTOR_UNIQ_ID_FIELD_NUMBER = 131; + /** + * extend .org.jetbrains.kotlin.metadata.Constructor { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Constructor, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> constructorUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 131, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int FUNCTION_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.Function { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Function, + java.util.List> functionAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int FUNCTION_CONTAINING_FILE_ID_FIELD_NUMBER = 135; + /** + * extend .org.jetbrains.kotlin.metadata.Function { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Function, + java.lang.Integer> functionContainingFileId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), + 0, + null, + null, + 135, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, + java.lang.Integer.class); + public static final int FUNCTION_UNIQ_ID_FIELD_NUMBER = 136; + /** + * extend .org.jetbrains.kotlin.metadata.Function { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Function, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> functionUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 136, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int PROPERTY_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.Property { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Property, + java.util.List> propertyAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int PROPERTY_GETTER_ANNOTATION_FIELD_NUMBER = 132; + /** + * extend .org.jetbrains.kotlin.metadata.Property { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Property, + java.util.List> propertyGetterAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 132, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int PROPERTY_SETTER_ANNOTATION_FIELD_NUMBER = 133; + /** + * extend .org.jetbrains.kotlin.metadata.Property { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Property, + java.util.List> propertySetterAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 133, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int COMPILE_TIME_VALUE_FIELD_NUMBER = 131; + /** + * extend .org.jetbrains.kotlin.metadata.Property { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Property, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value> compileTimeValue = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(), + null, + 131, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.class); + public static final int PROPERTY_CONTAINING_FILE_ID_FIELD_NUMBER = 135; + /** + * extend .org.jetbrains.kotlin.metadata.Property { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Property, + java.lang.Integer> propertyContainingFileId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), + 0, + null, + null, + 135, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, + java.lang.Integer.class); + public static final int PROPERTY_UNIQ_ID_FIELD_NUMBER = 136; + /** + * extend .org.jetbrains.kotlin.metadata.Property { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Property, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> propertyUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 136, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int ENUM_ENTRY_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.EnumEntry { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry, + java.util.List> enumEntryAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int ENUM_ENTRY_UNIQ_ID_FIELD_NUMBER = 131; + /** + * extend .org.jetbrains.kotlin.metadata.EnumEntry { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> enumEntryUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 131, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int PARAMETER_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.ValueParameter { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter, + java.util.List> parameterAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int VALUE_PARAM_UNIQ_ID_FIELD_NUMBER = 131; + /** + * extend .org.jetbrains.kotlin.metadata.ValueParameter { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> valueParamUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 131, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int TYPE_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.Type { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.Type, + java.util.List> typeAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int TYPE_PARAMETER_ANNOTATION_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.TypeParameter { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter, + java.util.List> typeParameterAnnotation = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.getDefaultInstance(), + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + false, + org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); + public static final int TYPE_PARAM_UNIQ_ID_FIELD_NUMBER = 131; + /** + * extend .org.jetbrains.kotlin.metadata.TypeParameter { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> typeParamUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 131, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int PACKAGE_FRAGMENT_FILES_FIELD_NUMBER = 130; + /** + * extend .org.jetbrains.kotlin.metadata.PackageFragment { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files> packageFragmentFiles = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.getDefaultInstance(), + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.getDefaultInstance(), + null, + 130, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, + org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.class); + + static { + } + + // @@protoc_insertion_point(outer_class_scope) +} \ No newline at end of file diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt new file mode 100644 index 00000000000..47e2cceeecf --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt @@ -0,0 +1,251 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.config.AnalysisFlags +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.incremental.components.NoLookupLocation +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker +import org.jetbrains.kotlin.resolve.descriptorUtil.filterOutSourceAnnotations +import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe +import org.jetbrains.kotlin.resolve.descriptorUtil.module +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.MemberScope +import org.jetbrains.kotlin.serialization.AnnotationSerializer +import org.jetbrains.kotlin.serialization.DescriptorSerializer +import org.jetbrains.kotlin.serialization.StringTableImpl +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream +import java.util.zip.GZIPInputStream +import java.util.zip.GZIPOutputStream + +internal object JsKlibMetadataSerializationUtil { + const val CLASS_METADATA_FILE_EXTENSION: String = "klm" + + fun serializeMetadata( + bindingContext: BindingContext, + jsDescriptor: JsKlibMetadataModuleDescriptor, + languageVersionSettings: LanguageVersionSettings, + metadataVersion: JsKlibMetadataVersion, + declarationTableHandler: ((DeclarationDescriptor) -> JsKlibMetadataProtoBuf.DescriptorUniqId?) + ): SerializedMetadata { + val serializedFragments = HashMap() + val module = jsDescriptor.data + + for (fqName in getPackagesFqNames(module).sortedBy { it.asString() }) { + val fragment = serializeDescriptors( + bindingContext, module, + module.getPackage(fqName).memberScope.getContributedDescriptors(), + fqName, languageVersionSettings, metadataVersion, declarationTableHandler + ) + + if (!fragment.isEmpty()) { + serializedFragments[fqName] = fragment + } + } + + return SerializedMetadata(serializedFragments, jsDescriptor, languageVersionSettings) + } + + class SerializedMetadata( + private val serializedFragments: Map, + private val jsDescriptor: JsKlibMetadataModuleDescriptor, + private val languageVersionSettings: LanguageVersionSettings + ) { + + fun asByteArray(): ByteArray = + ByteArrayOutputStream().apply { + GZIPOutputStream(this).use { stream -> + serializeHeader( + jsDescriptor.data, + packageFqName = null, + languageVersionSettings = languageVersionSettings + ).writeDelimitedTo(stream) + asLibrary().writeTo(stream) + } + }.toByteArray() + + private fun asLibrary(): JsKlibMetadataProtoBuf.Library { + jsDescriptor.imported + val builder = JsKlibMetadataProtoBuf.Library.newBuilder() + + jsDescriptor.imported.forEach { builder.addImportedModule(it) } + + for ((_, fragment) in serializedFragments.entries.sortedBy { (fqName, _) -> fqName.asString() }) { + builder.addPackageFragment(fragment) + } + + return builder.build() + } + } + + fun serializeDescriptors( + bindingContext: BindingContext, + module: ModuleDescriptor, + scope: Collection, + fqName: FqName, + languageVersionSettings: LanguageVersionSettings, + metadataVersion: BinaryVersion, + declarationTableHandler: ((DeclarationDescriptor) -> JsKlibMetadataProtoBuf.DescriptorUniqId?) + ): ProtoBuf.PackageFragment { + val builder = ProtoBuf.PackageFragment.newBuilder() + + val skip = fun(descriptor: DeclarationDescriptor): Boolean { + // TODO: ModuleDescriptor should be able to return the package only with the contents of that module, without dependencies + if (descriptor.module != module) return true + + if (descriptor is MemberDescriptor && descriptor.isExpect) { + return !(descriptor is ClassDescriptor && ExpectedActualDeclarationChecker.shouldGenerateExpectClass(descriptor)) + } + + return false + } + + val fileRegistry = JsKlibMetadataFileRegistry() + val extension = JsKlibMetadataSerializerExtension(fileRegistry, languageVersionSettings, metadataVersion, declarationTableHandler) + + val classDescriptors = scope.filterIsInstance().sortedBy { it.fqNameSafe.asString() } + + fun serializeClasses(descriptors: Collection, parentSerializer: DescriptorSerializer) { + for (descriptor in descriptors) { + if (descriptor !is ClassDescriptor || skip(descriptor)) continue + + val serializer = DescriptorSerializer.create(descriptor, extension, parentSerializer) + serializeClasses(descriptor.unsubstitutedInnerClassesScope.getContributedDescriptors(), serializer) + val classProto = serializer.classProto(descriptor).build() ?: error("Class not serialized: $descriptor") + builder.addClass_(classProto) + } + } + + val serializer = DescriptorSerializer.createTopLevel(extension) + serializeClasses(classDescriptors, serializer) + + val stringTable = extension.stringTable + + val members = scope.filterNot(skip) + builder.`package` = serializer.packagePartProto(fqName, members).build() + + builder.setExtension( + JsKlibMetadataProtoBuf.packageFragmentFiles, + serializeFiles(fileRegistry, bindingContext, AnnotationSerializer(stringTable)) + ) + + val (strings, qualifiedNames) = stringTable.buildProto() + builder.strings = strings + builder.qualifiedNames = qualifiedNames + + return builder.build() + } + + private fun serializeFiles( + fileRegistry: JsKlibMetadataFileRegistry, + bindingContext: BindingContext, + serializer: AnnotationSerializer + ): JsKlibMetadataProtoBuf.Files { + val filesProto = JsKlibMetadataProtoBuf.Files.newBuilder() + for ((file, id) in fileRegistry.fileIds.entries.sortedBy { it.value }) { + val fileProto = JsKlibMetadataProtoBuf.File.newBuilder() + if (id != filesProto.fileCount) { + fileProto.id = id + } + val annotations = when (file) { + is KotlinPsiFileMetadata -> file.ktFile.annotationEntries.map { bindingContext[BindingContext.ANNOTATION, it]!! } + is KotlinDeserializedFileMetadata -> file.packageFragment.fileMap[file.fileId]!!.annotations + } + for (annotation in annotations.filterOutSourceAnnotations()) { + fileProto.addAnnotation(serializer.serializeAnnotation(annotation)) + } + filesProto.addFile(fileProto) + } + return filesProto.build() + } + + private fun ProtoBuf.PackageFragment.isEmpty(): Boolean = + class_Count == 0 && `package`.let { it.functionCount == 0 && it.propertyCount == 0 && it.typeAliasCount == 0 } + + fun serializeHeader( + module: ModuleDescriptor, packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings + ): JsKlibMetadataProtoBuf.Header { + val header = JsKlibMetadataProtoBuf.Header.newBuilder() + + if (packageFqName != null) { + header.packageFqName = packageFqName.asString() + } + + if (languageVersionSettings.isPreRelease()) { + header.flags = 1 + } + + val experimentalAnnotationFqNames = languageVersionSettings.getFlag(AnalysisFlags.experimental) + if (experimentalAnnotationFqNames.isNotEmpty()) { + val stringTable = StringTableImpl() + for (fqName in experimentalAnnotationFqNames) { + val descriptor = module.resolveClassByFqName(FqName(fqName), NoLookupLocation.FOR_ALREADY_TRACKED) ?: continue + header.addAnnotation(ProtoBuf.Annotation.newBuilder().apply { + id = stringTable.getFqNameIndex(descriptor) + }) + } + val (strings, qualifiedNames) = stringTable.buildProto() + header.strings = strings + header.qualifiedNames = qualifiedNames + } + + // TODO: write JS code binary version + + return header.build() + } + + private fun getPackagesFqNames(module: ModuleDescriptor): Set { + return mutableSetOf().apply { + getSubPackagesFqNames(module.getPackage(FqName.ROOT), this) + add(FqName.ROOT) + } + } + + private fun getSubPackagesFqNames(packageView: PackageViewDescriptor, result: MutableSet) { + val fqName = packageView.fqName + if (!fqName.isRoot) { + result.add(fqName) + } + + for (descriptor in packageView.memberScope.getContributedDescriptors(DescriptorKindFilter.PACKAGES, MemberScope.ALL_NAME_FILTER)) { + if (descriptor is PackageViewDescriptor) { + getSubPackagesFqNames(descriptor, result) + } + } + } + + @JvmStatic + fun readModuleAsProto(metadata: ByteArray): JsKlibMetadataParts { + val (header, content) = GZIPInputStream(ByteArrayInputStream(metadata)).use { stream -> + JsKlibMetadataProtoBuf.Header.parseDelimitedFrom(stream, JsKlibMetadataSerializerProtocol.extensionRegistry) to + JsKlibMetadataProtoBuf.Library.parseFrom(stream, JsKlibMetadataSerializerProtocol.extensionRegistry) + } + + return JsKlibMetadataParts(header, content.packageFragmentList, content.importedModuleList) + } +} + +data class JsKlibMetadataParts( + val header: JsKlibMetadataProtoBuf.Header, + val body: List, + val importedModules: List +) + +internal fun DeclarationDescriptor.extractFileId(): Int? = when (this) { + is DeserializedClassDescriptor -> classProto.getExtension(JsKlibMetadataProtoBuf.classContainingFileId) + is DeserializedSimpleFunctionDescriptor -> proto.getExtension(JsKlibMetadataProtoBuf.functionContainingFileId) + is DeserializedPropertyDescriptor -> proto.getExtension(JsKlibMetadataProtoBuf.propertyContainingFileId) + else -> null +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt new file mode 100644 index 00000000000..7d895ec0f9a --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt @@ -0,0 +1,118 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.config.LanguageFeature +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion +import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.source.PsiSourceFile +import org.jetbrains.kotlin.serialization.DescriptorSerializer +import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase +import org.jetbrains.kotlin.types.FlexibleType + +class JsKlibMetadataSerializerExtension( + private val fileRegistry: JsKlibMetadataFileRegistry, + private val languageVersionSettings: LanguageVersionSettings, + override val metadataVersion: BinaryVersion, + val declarationTableHandler: ((DeclarationDescriptor) -> JsKlibMetadataProtoBuf.DescriptorUniqId?) +) : KotlinSerializerExtensionBase(JsKlibMetadataSerializerProtocol) { + override val stringTable = JsKlibMetadataStringTable() + + override fun serializeFlexibleType(flexibleType: FlexibleType, lowerProto: ProtoBuf.Type.Builder, upperProto: ProtoBuf.Type.Builder) { + lowerProto.flexibleTypeCapabilitiesId = stringTable.getStringIndex(DynamicTypeDeserializer.id) + } + + private fun uniqId(descriptor: DeclarationDescriptor): JsKlibMetadataProtoBuf.DescriptorUniqId? { +// val index = declarationTable.descriptorTable.get(descriptor) +// return index?.let { newDescriptorUniqId(it) } + return declarationTableHandler(descriptor) + } + + override fun serializeTypeParameter(typeParameter: TypeParameterDescriptor, proto: ProtoBuf.TypeParameter.Builder) { + uniqId(typeParameter)?.let { proto.setExtension(JsKlibMetadataProtoBuf.typeParamUniqId, it) } + super.serializeTypeParameter(typeParameter, proto) + } + + override fun serializeValueParameter(descriptor: ValueParameterDescriptor, proto: ProtoBuf.ValueParameter.Builder) { + uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.valueParamUniqId, it) } + super.serializeValueParameter(descriptor, proto) + } + + override fun serializeEnumEntry(descriptor: ClassDescriptor, proto: ProtoBuf.EnumEntry.Builder) { + uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.enumEntryUniqId, it) } + super.serializeEnumEntry(descriptor, proto) + } + + override fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder, + childSerializer: DescriptorSerializer + ) { + uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.constructorUniqId, it) } + super.serializeConstructor(descriptor, proto, childSerializer) + } + + override fun serializeClass( + descriptor: ClassDescriptor, + proto: ProtoBuf.Class.Builder, + versionRequirementTable: MutableVersionRequirementTable, + childSerializer: DescriptorSerializer + ) { + uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.classUniqId, it) } + val id = getFileId(descriptor) + if (id != null) { + proto.setExtension(JsKlibMetadataProtoBuf.classContainingFileId, id) + } + super.serializeClass(descriptor, proto, versionRequirementTable, childSerializer) + } + + override fun serializeProperty( + descriptor: PropertyDescriptor, + proto: ProtoBuf.Property.Builder, + versionRequirementTable: MutableVersionRequirementTable, + childSerializer: DescriptorSerializer + ) { + uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.propertyUniqId, it) } + val id = getFileId(descriptor) + if (id != null) { + proto.setExtension(JsKlibMetadataProtoBuf.propertyContainingFileId, id) + } + super.serializeProperty(descriptor, proto, versionRequirementTable, childSerializer) + } + + override fun serializeFunction(descriptor: FunctionDescriptor, + proto: ProtoBuf.Function.Builder, + childSerializer: DescriptorSerializer + ) { + uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.functionUniqId, it) } + val id = getFileId(descriptor) + if (id != null) { + proto.setExtension(JsKlibMetadataProtoBuf.functionContainingFileId, id) + } + super.serializeFunction(descriptor, proto, childSerializer) + } + + private fun getFileId(descriptor: DeclarationDescriptor): Int? { + if (!DescriptorUtils.isTopLevelDeclaration(descriptor) || descriptor !is DeclarationDescriptorWithSource) return null + + val fileId = descriptor.extractFileId() + if (fileId != null) { + (descriptor.containingDeclaration as? JsKlibMetadataPackageFragment)?.let { packageFragment -> + return fileRegistry.lookup(KotlinDeserializedFileMetadata(packageFragment, fileId)) + } + } + + val file = descriptor.source.containingFile as? PsiSourceFile ?: return null + + val psiFile = file.psiFile + return (psiFile as? KtFile)?.let { fileRegistry.lookup(KotlinPsiFileMetadata(it)) } + } + + override fun releaseCoroutines() = languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt new file mode 100644 index 00000000000..975ccae1d57 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite +import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol + +object JsKlibMetadataSerializerProtocol : SerializerExtensionProtocol( + ExtensionRegistryLite.newInstance().apply(JsKlibMetadataProtoBuf::registerAllExtensions), + JsKlibMetadataProtoBuf.packageFqName, + JsKlibMetadataProtoBuf.constructorAnnotation, + JsKlibMetadataProtoBuf.classAnnotation, + JsKlibMetadataProtoBuf.functionAnnotation, + JsKlibMetadataProtoBuf.propertyAnnotation, + JsKlibMetadataProtoBuf.propertyGetterAnnotation, + JsKlibMetadataProtoBuf.propertySetterAnnotation, + JsKlibMetadataProtoBuf.enumEntryAnnotation, + JsKlibMetadataProtoBuf.compileTimeValue, + JsKlibMetadataProtoBuf.parameterAnnotation, + JsKlibMetadataProtoBuf.typeAnnotation, + JsKlibMetadataProtoBuf.typeParameterAnnotation +) { + fun getKjsmFilePath(packageFqName: FqName): String { + val shortName = if (packageFqName.isRoot) Name.identifier("root-package") else packageFqName.shortName() + + return packageFqName.child(shortName).asString().replace('.', '/') + + "." + + JsKlibMetadataSerializationUtil.CLASS_METADATA_FILE_EXTENSION + } +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt new file mode 100644 index 00000000000..d0b9984ee8f --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor +import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters +import org.jetbrains.kotlin.name.ClassId +import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.descriptorUtil.classId +import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers +import org.jetbrains.kotlin.serialization.StringTableImpl + +class JsKlibMetadataStringTable : StringTableImpl() { + override fun getLocalClassIdReplacement(descriptor: ClassifierDescriptorWithTypeParameters): ClassId? { + return if (descriptor.containingDeclaration is CallableMemberDescriptor) { + val superClassifiers = descriptor.getAllSuperClassifiers() + .mapNotNull { it as ClassifierDescriptorWithTypeParameters } + .filter { it != descriptor } + .toList() + if (superClassifiers.size == 1) { + superClassifiers[0].classId + } else { + val superClass = superClassifiers.find { !DescriptorUtils.isInterface(it) } + superClass?.classId ?: ClassId.topLevel(KotlinBuiltIns.FQ_NAMES.any.toSafe()) + } + } else { + super.getLocalClassIdReplacement(descriptor) + } + } +} diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataVersion.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataVersion.kt new file mode 100644 index 00000000000..2657d110514 --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataVersion.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata + +import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion +import java.io.DataInputStream +import java.io.InputStream + +class JsKlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) { + override fun isCompatible(): Boolean = + this.isCompatibleTo(INSTANCE) + + fun toInteger() = (patch shl 16) + (minOf(minor, 255) shl 8) + minOf(major, 255) + + companion object { + @JvmField + val INSTANCE = JsKlibMetadataVersion(1, 2, 6) + + @JvmField + val INVALID_VERSION = JsKlibMetadataVersion() + + fun fromInteger(version: Int): JsKlibMetadataVersion = + JsKlibMetadataVersion(version and 255, (version shr 8) and 255, version shr 16) + + fun readFrom(stream: InputStream): JsKlibMetadataVersion { + val dataInput = DataInputStream(stream) + val size = dataInput.readInt() + + // We assume here that the version will always have 3 components. This is needed to prevent reading an unpredictable amount + // of integers from old .kjsm files (pre-1.1) because they did not have the version in the beginning + if (size != INSTANCE.toArray().size) return INVALID_VERSION + + return JsKlibMetadataVersion(*(1..size).map { dataInput.readInt() }.toIntArray()) + } + } +} \ No newline at end of file diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/js.proto b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/js.proto new file mode 100644 index 00000000000..e31a3cce3db --- /dev/null +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/js.proto @@ -0,0 +1,122 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata; + +import "core/metadata/src/metadata.proto"; + +option java_outer_classname = "JsKlibMetadataProtoBuf"; +option optimize_for = LITE_RUNTIME; + +message Header { + /* + preRelease + */ + optional int32 flags = 1; + + // (patch << 16) + (minor << 8) + major + optional int32 js_code_binary_version = 2 [default = 1]; + + optional string package_fq_name = 3; + + optional org.jetbrains.kotlin.metadata.StringTable strings = 4; + + optional org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; + + // Annotations on the whole module + repeated org.jetbrains.kotlin.metadata.Annotation annotation = 6; +} + +message File { + // If absent, id is the index of the file in the Files.file list + optional int32 id = 1; + + repeated org.jetbrains.kotlin.metadata.Annotation annotation = 2; +} + +message Files { + repeated File file = 1; +} + +message DescriptorUniqId { + required int64 index = 1; +} + + +extend org.jetbrains.kotlin.metadata.Package { + optional int32 package_fq_name = 131; +} + +extend org.jetbrains.kotlin.metadata.Class { + repeated org.jetbrains.kotlin.metadata.Annotation class_annotation = 130; + optional int32 class_containing_file_id = 135; + optional DescriptorUniqId class_uniq_id = 136; +} + +extend org.jetbrains.kotlin.metadata.Constructor { + repeated org.jetbrains.kotlin.metadata.Annotation constructor_annotation = 130; + optional DescriptorUniqId constructor_uniq_id = 131; +} + +extend org.jetbrains.kotlin.metadata.Function { + repeated org.jetbrains.kotlin.metadata.Annotation function_annotation = 130; + optional int32 function_containing_file_id = 135; + optional DescriptorUniqId function_uniq_id = 136; +} + +extend org.jetbrains.kotlin.metadata.Property { + repeated org.jetbrains.kotlin.metadata.Annotation property_annotation = 130; + repeated org.jetbrains.kotlin.metadata.Annotation property_getter_annotation = 132; + repeated org.jetbrains.kotlin.metadata.Annotation property_setter_annotation = 133; + optional org.jetbrains.kotlin.metadata.Annotation.Argument.Value compile_time_value = 131; + optional int32 property_containing_file_id = 135; + optional DescriptorUniqId property_uniq_id = 136; + +} + +extend org.jetbrains.kotlin.metadata.EnumEntry { + repeated org.jetbrains.kotlin.metadata.Annotation enum_entry_annotation = 130; + optional DescriptorUniqId enum_entry_uniq_id = 131; +} + +extend org.jetbrains.kotlin.metadata.ValueParameter { + repeated org.jetbrains.kotlin.metadata.Annotation parameter_annotation = 130; + optional DescriptorUniqId value_param_uniq_id = 131; +} + +extend org.jetbrains.kotlin.metadata.Type { + repeated org.jetbrains.kotlin.metadata.Annotation type_annotation = 130; +} + +extend org.jetbrains.kotlin.metadata.TypeParameter { + repeated org.jetbrains.kotlin.metadata.Annotation type_parameter_annotation = 130; + optional DescriptorUniqId type_param_uniq_id = 131; +} + +extend org.jetbrains.kotlin.metadata.PackageFragment { + optional Files package_fragment_files = 130; +} + +message Classes { + // id in StringTable + repeated int32 class_name = 1 [packed = true]; +} + +message Library { + repeated org.jetbrains.kotlin.metadata.PackageFragment package_fragment = 2; + + repeated string imported_module = 3; +} diff --git a/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt b/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt index 1c9581cd5aa..26970735068 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt @@ -57,7 +57,8 @@ val PROTO_PATHS: List = listOf( ProtoPath("konan/library-reader/src/konan.proto"), ProtoPath("core/metadata.jvm/src/jvm_metadata.proto"), ProtoPath("core/metadata.jvm/src/jvm_module.proto"), - ProtoPath("build-common/src/java_descriptors.proto") + ProtoPath("build-common/src/java_descriptors.proto"), + ProtoPath("compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/js.proto") ) private val EXT_OPTIONS_PROTO_PATH = ProtoPath("core/metadata/src/ext_options.proto") diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt index 733a09de8de..81691501a64 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateIrRuntime.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.ir.backend.js.compile -import org.jetbrains.kotlin.js.test.runtimeSources +import org.jetbrains.kotlin.js.test.JsIrTestRuntime import org.jetbrains.kotlin.psi.KtFile import java.io.File @@ -53,7 +53,7 @@ fun main() { val result = compile( environment.project, - runtimeSources.map(::createPsiFile), + JsIrTestRuntime.FULL.sources.map(::createPsiFile), buildConfiguration(environment), null, true,