From c227c13799c50b7f7ab0c35d50a8da33af201d8e Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Fri, 26 Jul 2019 14:45:18 +0300 Subject: [PATCH] Commonizing klib metadata between native and js --- build.gradle.kts | 1 + .../jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 35 +- .../kotlin/ir/backend/js/compiler.kt | 3 +- .../jetbrains/kotlin/backend/wasm/compiler.kt | 3 +- .../ir/serialization.common/build.gradle.kts | 10 + .../DeserializeDescriptorReference.kt | 2 +- .../backend/common/serialization/UniqId.kt | 21 +- .../metadata/DynamicTypeDeserializer.kt | 2 +- .../metadata/KlibFileMetadata.kt} | 9 +- .../metadata/KlibMetadataFileRegistry.kt | 41 + .../KlibMetadataIncrementalSerializer.kt | 85 + .../KlibMetadataMonolithicSerializer.kt | 86 + .../metadata/KlibMetadataSerializer.kt | 314 ++ .../KlibMetadataSerializerExtension.kt} | 70 +- compiler/ir/serialization.js/src/js.proto | 127 - .../jetbrains/kotlin/ir/backend/js/klib.kt | 162 +- .../ir/JsDescriptorReferenceDeserializer.kt | 9 +- .../ir/JsDescriptorUniqIdAware.kt | 27 - .../js/lower/serialization/ir/JsIrLinker.kt | 4 +- .../metadata/JsKlibMetadataFileRegistry.kt | 16 - .../JsKlibMetadataFragmentProvider.kt | 86 - .../metadata/JsKlibMetadataPackageFragment.kt | 7 +- .../JsKlibMetadataSerializationUtil.kt | 220 - .../JsKlibMetadataSerializerProtocol.kt | 25 - .../test/GenerateIrRuntime.kt | 28 +- .../org/jetbrains/kotlin/konan/file/File.kt | 3 +- .../kotlin/konan/properties/Properties.kt | 2 +- .../jetbrains/kotlin/{konan => }/util/Util.kt | 5 +- .../org/jetbrains/kotlin/util/WithLogger.kt | 24 + compiler/util-klib-metadata/build.gradle.kts | 24 + .../src/KlibMetadataProtoBuf.proto} | 96 +- .../metadata/KlibMetadataClassDataFinder.kt | 16 +- .../KlibMetadataDeserializationUtils.kt | 30 + ...dataDeserializedPackageFragmentsFactory.kt | 24 + .../library/metadata/KlibMetadataFactories.kt | 62 + .../metadata/KlibMetadataMetadataVersion.kt | 8 +- .../KlibMetadataModuleDescriptorFactory.kt | 59 + .../metadata/KlibMetadataPackageFragment.kt | 39 +- .../metadata/KlibMetadataProtoBuf.java} | 2863 +++++-------- .../KlibMetadataSerializerProtocol.kt | 25 + .../metadata/KlibMetadataStringTable.kt} | 4 +- .../metadata/KlibModuleDescriptorFactory.kt | 6 +- .../library/metadata/KlibModuleOrigin.kt | 36 + .../KlibResolvedModuleDescriptorsFactory.kt | 50 + .../metadata}/NullFlexibleTypeDeserializer.kt | 0 .../kotlin/library/metadata/SourceFileMap.kt | 54 + ...DeserializedPackageFragmentsFactoryImpl.kt | 129 +- ...KlibMetadataModuleDescriptorFactoryImpl.kt | 155 + .../impl/KlibModuleDescriptorFactoryImpl.kt | 14 +- ...libResolvedModuleDescriptorsFactoryImpl.kt | 183 + .../resolver/KotlinLibraryResolver.kt | 56 + .../resolver/KotlinResolvedLibrary.kt | 23 + .../impl/KotlinLibraryResolverImpl.kt | 156 + .../impl/KotlinResolvedLibraryImpl.kt | 38 + .../jetbrains/kotlin/library/KotlinLibrary.kt | 17 + .../kotlin/library/KotlinLibraryUtils.kt | 2 +- .../kotlin/library/SearchPathResolver.kt | 160 + .../kotlin/library/impl/KotlinLibraryImpl.kt | 12 +- .../library/impl/KotlinLibraryLayoutImpl.kt | 2 +- .../generators/protobuf/GenerateProtoBuf.kt | 7 +- .../KotlinMPPGradleProjectResolver.kt | 2 +- .../ide/konan/KotlinNativePluginUtil.kt | 102 +- .../ide/konan/NativePlatformKindResolution.kt | 69 +- .../KotlinNativeLoadingMetadataCache.kt | 15 +- .../KotlinNativeMetadataDecompiler.kt | 6 +- .../KotlinNativeMetadataDecompilerBase.kt | 10 +- ...NativeMetadataDeserializerForDecompiler.kt | 4 +- .../KotlinNativeProtoBasedClassDataFinder.kt | 6 +- .../konan/index/KotlinNativeMetaFileIndex.kt | 3 +- .../kotlin/js/test/BasicIrBoxTest.kt | 40 +- .../kotlin/js/test/BasicWasmBoxTest.kt | 5 +- konan/library-reader/build.gradle.kts | 3 + konan/library-reader/src/konan.proto | 101 - .../descriptors/konan/KonanModuleOrigin.kt | 32 - .../kotlin/konan/library/KonanFactories.kt | 17 + .../kotlin/konan/library/KonanLibrary.kt | 73 - .../konan/library/KonanLibraryLayout.kt | 48 - .../kotlin/konan/library/KonanLibraryUtils.kt | 45 - .../konan/library/KonanMetadataReader.kt | 17 - .../konan/library/SearchPathResolver.kt | 19 - .../library/impl/DefaultMetadataReaderImpl.kt | 27 - .../konan/library/impl/KonanLibraryImpl.kt | 86 - .../library/impl/KonanLibraryLayoutImpl.kt | 104 - .../library/lite/LiteKonanLibraryFacade.kt | 1 + .../library/resolver/KonanLibraryResolver.kt | 64 - .../library/resolver/KonanResolvedLibrary.kt | 32 - .../resolver/impl/KonanLibraryResolverImpl.kt | 142 - .../resolver/impl/KonanResolvedLibraryImpl.kt | 39 - .../kotlin/konan/util/KonanFactories.kt | 56 - .../kotlin/metadata/konan/KonanProtoBuf.java | 3754 ----------------- .../konan/KonanDeserializationUtils.kt | 14 - ...onanDeserializedModuleDescriptorFactory.kt | 43 - ...onanDeserializedPackageFragmentsFactory.kt | 44 - .../KonanResolvedModuleDescriptorsFactory.kt | 56 - .../konan/KonanSerializerProtocol.kt | 26 - ...DeserializedModuleDescriptorFactoryImpl.kt | 85 - ...nanResolvedModuleDescriptorsFactoryImpl.kt | 144 - settings.gradle | 2 + 98 files changed, 3265 insertions(+), 7848 deletions(-) rename compiler/ir/{serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower => serialization.common/src/org/jetbrains/kotlin/backend/common}/serialization/metadata/DynamicTypeDeserializer.kt (95%) rename compiler/ir/{serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt => serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibFileMetadata.kt} (60%) create mode 100644 compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataFileRegistry.kt create mode 100644 compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataIncrementalSerializer.kt create mode 100644 compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataMonolithicSerializer.kt create mode 100644 compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt rename compiler/ir/{serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt => serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializerExtension.kt} (53%) delete mode 100644 compiler/ir/serialization.js/src/js.proto delete mode 100644 compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorUniqIdAware.kt delete mode 100644 compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt delete mode 100644 compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt delete mode 100644 compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt delete mode 100644 compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt rename compiler/util-io/src/org/jetbrains/kotlin/{konan => }/util/Util.kt (97%) create mode 100644 compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt create mode 100644 compiler/util-klib-metadata/build.gradle.kts rename compiler/{ir/backend.js/src/js.proto => util-klib-metadata/src/KlibMetadataProtoBuf.proto} (64%) rename konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanClassDataFinder.kt => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataClassDataFinder.kt (60%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializationUtils.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializedPackageFragmentsFactory.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataFactories.kt rename konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanMetadataVersion.kt => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt (63%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataModuleDescriptorFactory.kt rename konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanPackageFragment.kt => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataPackageFragment.kt (69%) rename compiler/{ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java => util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataProtoBuf.java} (53%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataSerializerProtocol.kt rename compiler/{ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt => util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataStringTable.kt} (92%) rename konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleDescriptorFactory.kt => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleDescriptorFactory.kt (92%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleOrigin.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibResolvedModuleDescriptorsFactory.kt rename {konan/library-reader/src/org/jetbrains/kotlin/serialization/konan => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata}/NullFlexibleTypeDeserializer.kt (100%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/SourceFileMap.kt rename konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedPackageFragmentsFactoryImpl.kt => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt (55%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataModuleDescriptorFactoryImpl.kt rename konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt => compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibModuleDescriptorFactoryImpl.kt (76%) create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibResolvedModuleDescriptorsFactoryImpl.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinLibraryResolver.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinResolvedLibrary.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinLibraryResolverImpl.kt create mode 100644 compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinResolvedLibraryImpl.kt create mode 100644 compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt delete mode 100644 konan/library-reader/src/konan.proto delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt create mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryLayout.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryUtils.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanMetadataReader.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/DefaultMetadataReaderImpl.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryImpl.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryLayoutImpl.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanLibraryResolver.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanResolvedLibrary.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanResolvedLibraryImpl.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/konan/util/KonanFactories.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/metadata/konan/KonanProtoBuf.java delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializationUtils.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedModuleDescriptorFactory.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedPackageFragmentsFactory.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanResolvedModuleDescriptorsFactory.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanSerializerProtocol.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedModuleDescriptorFactoryImpl.kt delete mode 100644 konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanResolvedModuleDescriptorsFactoryImpl.kt diff --git a/build.gradle.kts b/build.gradle.kts index 9843becea61..e9c23532e27 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -215,6 +215,7 @@ extra["compilerModules"] = arrayOf( ":compiler:ir.serialization.js", ":kotlin-util-io", ":kotlin-util-klib", + ":kotlin-util-klib-metadata", ":compiler:backend-common", ":compiler:backend", ":compiler:plugin-api", diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index 6b64454bf2b..843d30db137 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -33,7 +33,11 @@ import org.jetbrains.kotlin.js.config.EcmaVersion import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.config.SourceMapSourceEmbedding +import org.jetbrains.kotlin.library.resolver.impl.libraryResolver import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.KotlinLibrarySearchPathResolver +import org.jetbrains.kotlin.library.UnresolvedLibrary +import org.jetbrains.kotlin.library.toUnresolvedLibraries import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.serialization.js.ModuleKind @@ -138,20 +142,21 @@ class K2JsIrCompiler : CLICompiler() { // TODO: Handle non-empty main call arguments val mainCallArguments = if (K2JsArgumentConstants.NO_CALL == arguments.main) null else emptyList() - val loadedLibrariesNames = mutableSetOf() - val dependencies = mutableListOf() - val friendDependencies = mutableListOf() - - for (library in libraries) { - val irLib = loadKlib(library) - if (irLib.moduleName !in loadedLibrariesNames) { - dependencies.add(irLib) - loadedLibrariesNames.add(irLib.moduleName) - if (library in friendLibraries) { - friendDependencies.add(irLib) - } + val unresolvedLibraries = libraries.toUnresolvedLibraries + // Configure resolver to only understands absolute path libraries. + val libraryResolver = KotlinLibrarySearchPathResolver( + repositories = emptyList(), + directLibs = libraries, + distributionKlib = null, + localKotlinDir = null, + skipCurrentDir = true + // TODO: pass logger attached to message collector here. + ).libraryResolver() + val resolvedLibraries = libraryResolver.resolveWithDependencies(unresolvedLibraries, true, true, true) + val friendDependencies = resolvedLibraries.getFullList() + .filter { + it.moduleName in friendLibraries } - } val produceKind = produceMap[arguments.irProduceOnly] if (produceKind == null) { @@ -169,7 +174,7 @@ class K2JsIrCompiler : CLICompiler() { project = config.project, files = sourcesFiles, configuration = config.configuration, - allDependencies = dependencies, + allDependencies = resolvedLibraries, friendDependencies = friendDependencies, outputKlibPath = outputKlibPath, nopack = arguments.irLegacyGradlePluginCompatibility @@ -184,7 +189,7 @@ class K2JsIrCompiler : CLICompiler() { sourcesFiles, configuration, phaseConfig, - allDependencies = dependencies, + allDependencies = resolvedLibraries, friendDependencies = friendDependencies, mainArguments = mainCallArguments ) 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 e12da4f1263..b5dc688b35a 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,6 +6,7 @@ package org.jetbrains.kotlin.ir.backend.js import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel import org.jetbrains.kotlin.config.CompilerConfiguration @@ -28,7 +29,7 @@ fun compile( files: List, configuration: CompilerConfiguration, phaseConfig: PhaseConfig, - allDependencies: List, + allDependencies: KotlinLibraryResolveResult, friendDependencies: List, mainArguments: List?, exportedDeclarations: Set = emptySet() diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt index 6036bf34a42..8441fb3846a 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.wasm import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.invokeToplevel import org.jetbrains.kotlin.backend.wasm.codegen.IrModuleToWasm @@ -24,7 +25,7 @@ fun compileWasm( files: List, configuration: CompilerConfiguration, phaseConfig: PhaseConfig, - allDependencies: List, + allDependencies: KotlinLibraryResolveResult, friendDependencies: List, exportedDeclarations: Set = emptySet() ): WasmCompilerResult { diff --git a/compiler/ir/serialization.common/build.gradle.kts b/compiler/ir/serialization.common/build.gradle.kts index 81646f3c533..ad51a4b7d33 100644 --- a/compiler/ir/serialization.common/build.gradle.kts +++ b/compiler/ir/serialization.common/build.gradle.kts @@ -5,9 +5,19 @@ plugins { dependencies { // TODO: decouple from backend.common + compile(project(":compiler:frontend")) compile(project(":compiler:ir.backend.common")) compile(project(":compiler:ir.tree")) + compile(project(":compiler:serialization")) compile(project(":kotlin-util-klib")) + compile(project(":kotlin-util-klib-metadata")) + + compile(project(":compiler:util")) + compile(project(":compiler:ir.psi2ir")) + compile(project(":compiler:ir.backend.common")) + + compileOnly(intellijCoreDep()) { includeJars("intellij-core") } + } sourceSets { diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt index 2ef7ea4d9b9..9b62e84a4d9 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DeserializeDescriptorReference.kt @@ -14,8 +14,8 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe -import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor import org.jetbrains.kotlin.resolve.scopes.MemberScope +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor // This is all information needed to find a descriptor in the // tree of deserialized descriptors. Think of it as base + offset. diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt index ca5013c5903..57c00303b48 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/UniqId.kt @@ -5,9 +5,11 @@ package org.jetbrains.kotlin.backend.common.serialization -import org.jetbrains.kotlin.descriptors.* -//import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.protobuf.GeneratedMessageLite +import org.jetbrains.kotlin.serialization.deserialization.descriptors.* import org.jetbrains.kotlin.backend.common.serialization.proto.UniqId as ProtoUniqId // This is an abstract uniqIdIndex any serialized IR declarations gets. @@ -35,4 +37,17 @@ interface DescriptorUniqIdAware { fun DeclarationDescriptor.getUniqId(): Long? } -//val UniqId.declarationFileName: String get() = "$index${if (isLocal) "L" else "G"}.kjd" +object DeserializedDescriptorUniqIdAware : DescriptorUniqIdAware { + override fun DeclarationDescriptor.getUniqId(): Long? = when (this) { + is DeserializedClassDescriptor -> this.classProto.tryGetExtension(KlibMetadataProtoBuf.classUniqId) + is DeserializedSimpleFunctionDescriptor -> this.proto.tryGetExtension(KlibMetadataProtoBuf.functionUniqId) + is DeserializedPropertyDescriptor -> this.proto.tryGetExtension(KlibMetadataProtoBuf.propertyUniqId) + is DeserializedClassConstructorDescriptor -> this.proto.tryGetExtension(KlibMetadataProtoBuf.constructorUniqId) + is DeserializedTypeParameterDescriptor -> this.proto.tryGetExtension(KlibMetadataProtoBuf.typeParamUniqId) + is DeserializedTypeAliasDescriptor -> this.proto.tryGetExtension(KlibMetadataProtoBuf.typeAliasUniqId) + else -> null + }?.index +} + +fun newDescriptorUniqId(index: Long): KlibMetadataProtoBuf.DescriptorUniqId = + KlibMetadataProtoBuf.DescriptorUniqId.newBuilder().setIndex(index).build() \ No newline at end of file diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/DynamicTypeDeserializer.kt similarity index 95% rename from compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt rename to compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/DynamicTypeDeserializer.kt index 2db2a4c0731..e1bcd8810b1 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/DynamicTypeDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/DynamicTypeDeserializer.kt @@ -3,7 +3,7 @@ * 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 +package org.jetbrains.kotlin.backend.common.serialization.metadata import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeDeserializer diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibFileMetadata.kt similarity index 60% rename from compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt rename to compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibFileMetadata.kt index ccf116cb72e..065480ea2fb 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibFileMetadata.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibFileMetadata.kt @@ -5,13 +5,14 @@ package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata +import org.jetbrains.kotlin.library.metadata.KlibMetadataPackageFragment import org.jetbrains.kotlin.psi.KtFile -sealed class JsKlibFileMetadata +sealed class KlibFileMetadata -data class KotlinPsiFileMetadata(val ktFile: KtFile) : JsKlibFileMetadata() +data class KotlinPsiFileMetadata(val ktFile: KtFile) : KlibFileMetadata() data class KotlinDeserializedFileMetadata( - val packageFragment: JsKlibMetadataPackageFragment, + val packageFragment: KlibMetadataPackageFragment, val fileId: Int -) : JsKlibFileMetadata() +) : KlibFileMetadata() diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataFileRegistry.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataFileRegistry.kt new file mode 100644 index 00000000000..6b55809d9df --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataFileRegistry.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.backend.common.serialization.metadata.extractFileId +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource +import org.jetbrains.kotlin.library.metadata.KlibMetadataPackageFragment +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.source.PsiSourceFile + + +class KlibMetadataFileRegistry { + private val fileIdsImpl = mutableMapOf() + + fun lookup(file: KlibFileMetadata) = fileIdsImpl.getOrPut(file) { fileIdsImpl.size } + + val fileIds: Map + get() = fileIdsImpl + + fun getFileId(descriptor: DeclarationDescriptor): Int? { + if (!DescriptorUtils.isTopLevelDeclaration(descriptor) || descriptor !is DeclarationDescriptorWithSource) return null + + val fileId = descriptor.extractFileId() + if (fileId != null) { + (descriptor.containingDeclaration as? KlibMetadataPackageFragment)?.let { packageFragment -> + return this.lookup(KotlinDeserializedFileMetadata(packageFragment, fileId)) + } + } + + val file = descriptor.source.containingFile as? PsiSourceFile ?: return null + + val psiFile = file.psiFile + return (psiFile as? KtFile)?.let { this.lookup(KotlinPsiFileMetadata(it)) } + } + +} diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataIncrementalSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataIncrementalSerializer.kt new file mode 100644 index 00000000000..cb627342d74 --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataIncrementalSerializer.kt @@ -0,0 +1,85 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.backend.common.serialization.DescriptorTable +import org.jetbrains.kotlin.backend.common.serialization.isExpectMember +import org.jetbrains.kotlin.backend.common.serialization.isSerializableExpectClass +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataSerializer +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.CallableDescriptor +import org.jetbrains.kotlin.descriptors.ClassifierDescriptor +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.library.SerializedMetadata +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.descriptorUtil.fqNameSafe +import org.jetbrains.kotlin.resolve.descriptorUtil.module +import org.jetbrains.kotlin.serialization.DescriptorSerializer + +// TODO: need a refactoring between IncrementalSerializer and MonolithicSerializer. +class KlibMetadataIncrementalSerializer( + languageVersionSettings: LanguageVersionSettings, + metadataVersion: BinaryVersion, + descriptorTable: DescriptorTable +) : KlibMetadataSerializer(languageVersionSettings, metadataVersion, descriptorTable) { + + fun serializePackageFragment( + bindingContext: BindingContext, + module: ModuleDescriptor, + scope: Collection, + fqName: FqName + ): ProtoBuf.PackageFragment { + + val allDescriptors = scope.filter { + it.module == module + } + + val classifierDescriptors = allDescriptors + .filterIsInstance() + .filter { !it.isExpectMember || it.isSerializableExpectClass } + .sortedBy { it.fqNameSafe.asString() } + + val topLevelDescriptors = DescriptorSerializer.sort( + allDescriptors + .filterIsInstance() + .filter { !it.isExpectMember } + ) + + // TODO: For now, in the incremental serializer, we assume + // there is only a single package fragment per file. + // This is no always the case, actually. + // But marrying split package fragments with incremental compilation is an endeavour. + // See monolithic serializer for details. + return serializeDescriptors(fqName, classifierDescriptors, topLevelDescriptors, bindingContext).single() + } + + fun serializedMetadata( + fragments: Map>, + header: ByteArray + ): SerializedMetadata { + val fragmentNames = mutableListOf() + val fragmentParts = mutableListOf>() + + for ((fqName, fragment) in fragments.entries.sortedBy { it.key }) { + fragmentNames += fqName + fragmentParts += fragment + } + + return SerializedMetadata(header, fragmentParts, fragmentNames) + } + + // TODO: For now, in the incremental serializer, we assume + // there is only a single package fragment per file. + // This is no always the case, actually. + // But marrying split package fragments with incremental compilation is an endeavour. + // See monolithic serializer for details. + override val TOP_LEVEL_DECLARATION_COUNT_PER_FILE = null + override val TOP_LEVEL_CLASS_DECLARATION_COUNT_PER_FILE = null +} \ No newline at end of file diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataMonolithicSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataMonolithicSerializer.kt new file mode 100644 index 00000000000..f98c24b05cb --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataMonolithicSerializer.kt @@ -0,0 +1,86 @@ +package org.jetbrains.kotlin.backend.common.serialization.metadata + +import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable +import org.jetbrains.kotlin.backend.common.serialization.isExpectMember +import org.jetbrains.kotlin.backend.common.serialization.isSerializableExpectClass +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.library.SerializedMetadata +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf +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.descriptorUtil.module +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered +import org.jetbrains.kotlin.serialization.DescriptorSerializer + +// TODO: need a refactoring between IncrementalSerializer and MonolithicSerializer. +class KlibMetadataMonolithicSerializer( + languageVersionSettings: LanguageVersionSettings, + metadataVersion: BinaryVersion, + descriptorTable: DescriptorTable, + val bindingContext: BindingContext +) : KlibMetadataSerializer(languageVersionSettings, metadataVersion, descriptorTable) { + + protected fun serializePackageFragment(fqName: FqName, + module: ModuleDescriptor, + bindingContext: BindingContext + ): + List { + + // TODO: ModuleDescriptor should be able to return + // the package only with the contents of that module, without dependencies + + val fragments = module.getPackage(fqName).fragments.filter { it.module == module } + if (fragments.isEmpty()) return emptyList() + + val classifierDescriptors = DescriptorSerializer.sort( + fragments.flatMap { + it.getMemberScope().getDescriptorsFiltered(DescriptorKindFilter.CLASSIFIERS) + }.filter { !it.isExpectMember || it.isSerializableExpectClass } + ) + + val topLevelDescriptors = DescriptorSerializer.sort( + fragments.flatMap { fragment -> + fragment.getMemberScope().getDescriptorsFiltered(DescriptorKindFilter.CALLABLES) + }.filter { !it.isExpectMember } + ) + + return serializeDescriptors(fqName, classifierDescriptors, topLevelDescriptors, bindingContext) + } + + fun serializeModule(moduleDescriptor: ModuleDescriptor): SerializedMetadata { + + val fragments = mutableListOf>() + val fragmentNames = mutableListOf() + val emptyPackages = mutableListOf() + + for (packageFqName in getPackagesFqNames(moduleDescriptor)) { + val packageProtos = + serializePackageFragment(packageFqName, moduleDescriptor, bindingContext) + if (packageProtos.isEmpty()) continue + + val packageFqNameStr = packageFqName.asString() + + if (packageProtos.all { it.getExtension(KlibMetadataProtoBuf.isEmpty)}) { + emptyPackages.add(packageFqNameStr) + } + fragments.add(packageProtos.map { it.toByteArray() }) + fragmentNames.add(packageFqNameStr) + + } + val header = serializeHeader(moduleDescriptor, fragmentNames, emptyPackages) + + val libraryAsByteArray = header.toByteArray() + return SerializedMetadata(libraryAsByteArray, fragments, fragmentNames) + } + + // For platform libraries we get HUGE files. + // Indexing them in IDEA takes ages. + // So we split them into chunks. + override val TOP_LEVEL_DECLARATION_COUNT_PER_FILE = 128 + override val TOP_LEVEL_CLASS_DECLARATION_COUNT_PER_FILE = 64 + +} diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt new file mode 100644 index 00000000000..c4770b749c2 --- /dev/null +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializer.kt @@ -0,0 +1,314 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.backend.common.serialization.metadata + +import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable +import org.jetbrains.kotlin.backend.common.serialization.newDescriptorUniqId +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.ir.backend.js.lower.serialization.metadata.KlibMetadataFileRegistry +import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.KotlinPsiFileMetadata +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf +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.descriptorUtil.filterOutSourceAnnotations +import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter +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 + +internal fun Iterable.maybeChunked(size: Int?, transform: (List) -> R): List + = size?.let { this.chunked(size, transform) } ?: listOf(transform(this.toList())) + +abstract class KlibMetadataSerializer( + val languageVersionSettings: LanguageVersionSettings, + val metadataVersion: BinaryVersion, + val descriptorTable: DescriptorTable +) { + + val fileRegistry = KlibMetadataFileRegistry() + + lateinit var serializerContext: SerializerContext + + data class SerializerContext( + val serializerExtension: KlibMetadataSerializerExtension, + val topSerializer: DescriptorSerializer, + var classSerializer: DescriptorSerializer = topSerializer + ) + + fun declarationTableHandler(declarationDescriptor: DeclarationDescriptor): KlibMetadataProtoBuf.DescriptorUniqId { + val index = descriptorTable.get(declarationDescriptor) ?: error("No descriptor ID found for $declarationDescriptor") + return index.let { newDescriptorUniqId(it) } + } + + protected fun createNewContext(): SerializerContext { + + val extension = KlibMetadataSerializerExtension( + languageVersionSettings, + metadataVersion, + ::declarationTableHandler, + {descriptor -> fileRegistry.getFileId(descriptor) } , + KlibMetadataStringTable() + ) + return SerializerContext( + extension, + DescriptorSerializer.createTopLevel(extension) + ) + } + + protected inline fun withNewContext(crossinline block: SerializerContext.() -> T): T { + serializerContext = createNewContext() + return with(serializerContext, block) + } + + + private fun SerializerContext.buildFragment( + packageProto: ProtoBuf.Package, + classesProto: List>, + fqName: FqName, + isEmpty: Boolean, + bindingContext: BindingContext + ): ProtoBuf.PackageFragment { + + val (stringTableProto, nameTableProto) = serializerExtension.stringTable.buildProto() + + // TODO: we place files table to each and every fragment. + // Need to refactor it out sonehow. + val files = serializeFiles(fileRegistry, bindingContext, AnnotationSerializer(serializerExtension.stringTable)) + + return ProtoBuf.PackageFragment.newBuilder() + .setPackage(packageProto) + .addAllClass_(classesProto.map { it.first }) + .setStrings(stringTableProto) + .setQualifiedNames(nameTableProto) + .also { packageFragment -> + classesProto.forEach { + packageFragment.addExtension(KlibMetadataProtoBuf.className, it.second ) + } + packageFragment.setExtension(KlibMetadataProtoBuf.packageFragmentFiles, files) + packageFragment.setExtension(KlibMetadataProtoBuf.isEmpty, isEmpty) + packageFragment.setExtension(KlibMetadataProtoBuf.fqName, fqName.asString()) + } + .build() + } + + private fun serializeClass(packageName: FqName, + classDescriptor: ClassDescriptor): List> { + with(serializerContext) { + val previousSerializer = classSerializer + + classSerializer = DescriptorSerializer.create(classDescriptor, serializerExtension, classSerializer) + val classProto = classSerializer.classProto(classDescriptor).build() ?: error("Class not serialized: $classDescriptor") + //builder.addClass(classProto) + + val index = classSerializer.stringTable.getFqNameIndex(classDescriptor) + //builder.addExtension(KlibMetadataProtoBuf.className, index) + + val classes = serializeClasses(packageName/*, builder*/, + classDescriptor.unsubstitutedInnerClassesScope + .getContributedDescriptors(DescriptorKindFilter.CLASSIFIERS)) + + classSerializer = previousSerializer + return classes + Pair(classProto, index) + } + } + + protected fun serializeClasses(packageName: FqName, + //builder: ProtoBuf.PackageFragment.Builder, + descriptors: Collection): List> { + + return descriptors.filterIsInstance().flatMap { + serializeClass(packageName, /*builder, */it) + } + } + + private fun emptyPackageProto(): ProtoBuf.Package = ProtoBuf.Package.newBuilder().build() + + private fun SerializerContext.buildPackageProto( + fqName: FqName, + descriptors: List) = topSerializer.packagePartProto(fqName, descriptors).build() + ?: error("Package fragments not serialized: for $descriptors") + + protected fun serializeDescriptors( + fqName: FqName, + classifierDescriptors: List, + topLevelDescriptors: List, + bindingContext: BindingContext + ): List { + + if (TOP_LEVEL_CLASS_DECLARATION_COUNT_PER_FILE == null && + TOP_LEVEL_DECLARATION_COUNT_PER_FILE == null) { + + val typeAliases = classifierDescriptors.filterIsInstance() + val nonCassDescriptors = topLevelDescriptors+typeAliases + + + return listOf(withNewContext { + val packageProto = if (nonCassDescriptors.isEmpty()) + emptyPackageProto() + else + buildPackageProto(fqName, nonCassDescriptors) + + buildFragment( + packageProto, + serializeClasses(fqName, classifierDescriptors), + fqName, + topLevelDescriptors.isEmpty() && classifierDescriptors.isEmpty(), + bindingContext + ) + } + ) + } + + val result = mutableListOf() + + result += classifierDescriptors.maybeChunked(TOP_LEVEL_CLASS_DECLARATION_COUNT_PER_FILE) { descriptors -> + + withNewContext { + + //val classesProto = buildClassesProto { classesBuilder -> + // serializeClasses(fqName, classesBuilder, descriptors) + //} + val classesProto = serializeClasses(fqName, descriptors) + + val typeAliases = descriptors.filterIsInstance() + val packageProto = + if (typeAliases.isNotEmpty()) buildPackageProto(fqName, typeAliases) + else emptyPackageProto() + + buildFragment( + packageProto, + classesProto, + fqName, + descriptors.isEmpty(), + bindingContext + ) + } + } + + result += topLevelDescriptors.maybeChunked(TOP_LEVEL_DECLARATION_COUNT_PER_FILE) { descriptors -> + withNewContext { + buildFragment( + buildPackageProto(fqName, descriptors), + emptyList(), + fqName, + descriptors.isEmpty(), + bindingContext + ) + } + } + + if (result.isEmpty()) { + result += withNewContext { + buildFragment( + emptyPackageProto(), + emptyList(), + fqName, + true, + bindingContext + ) + } + } + + return result + } + + private fun serializeFiles( + fileRegistry: KlibMetadataFileRegistry, + bindingContext: BindingContext, + serializer: AnnotationSerializer + ): KlibMetadataProtoBuf.Files { + val filesProto = KlibMetadataProtoBuf.Files.newBuilder() + for ((file, id) in fileRegistry.fileIds.entries.sortedBy { it.value }) { + val fileProto = KlibMetadataProtoBuf.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 + else -> TODO("support other file types") + } + for (annotation in annotations.filterOutSourceAnnotations()) { + fileProto.addAnnotation(serializer.serializeAnnotation(annotation)) + } + val name = when (file) { + is KotlinPsiFileMetadata -> file.ktFile.getName() + else -> TODO("support other file types") + } + fileProto.name = name + filesProto.addFile(fileProto) + } + return filesProto.build() + } + + protected fun getPackagesFqNames(module: ModuleDescriptor): Set { + val result = mutableSetOf() + + fun getSubPackages(fqName: FqName) { + result.add(fqName) + module.getSubPackagesOf(fqName) { true }.forEach { getSubPackages(it) } + } + + getSubPackages(FqName.ROOT) + return result + } + + fun serializeHeader( + moduleDescriptor: ModuleDescriptor, + fragmentNames: List, + emptyPackages: List = emptyList() + ): KlibMetadataProtoBuf.Header { + val header = KlibMetadataProtoBuf.Header.newBuilder() + + header.moduleName = moduleDescriptor.name.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 = moduleDescriptor.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 + } + fragmentNames.forEach { + header.addPackageFragmentName(it) + } + emptyPackages.forEach { + header.addEmptyPackage(it) + } + return header.build() + } + + // For platform libraries we get HUGE files. + // Indexing them in IDEA takes ages. + // So we split them into chunks. + abstract protected val TOP_LEVEL_DECLARATION_COUNT_PER_FILE: Int? + abstract protected val TOP_LEVEL_CLASS_DECLARATION_COUNT_PER_FILE: Int? +} + +fun DeclarationDescriptor.extractFileId(): Int? = when (this) { + is DeserializedClassDescriptor -> classProto.getExtension(KlibMetadataProtoBuf.classFile) + is DeserializedSimpleFunctionDescriptor -> proto.getExtension(KlibMetadataProtoBuf.functionFile) + is DeserializedPropertyDescriptor -> proto.getExtension(KlibMetadataProtoBuf.propertyFile) + else -> null +} diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializerExtension.kt similarity index 53% rename from compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt rename to compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializerExtension.kt index 9bd1b5bd1a8..c313ea87df6 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerExtension.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/metadata/KlibMetadataSerializerExtension.kt @@ -3,56 +3,57 @@ * 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 +package org.jetbrains.kotlin.backend.common.serialization.metadata import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf +import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol 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.serialization.StringTableImpl import org.jetbrains.kotlin.types.FlexibleType -class JsKlibMetadataSerializerExtension( - private val fileRegistry: JsKlibMetadataFileRegistry, +class KlibMetadataSerializerExtension( private val languageVersionSettings: LanguageVersionSettings, override val metadataVersion: BinaryVersion, - val declarationTableHandler: ((DeclarationDescriptor) -> JsKlibMetadataProtoBuf.DescriptorUniqId?) -) : KotlinSerializerExtensionBase(JsKlibMetadataSerializerProtocol) { - override val stringTable = JsKlibMetadataStringTable() + val declarationTableHandler: (DeclarationDescriptor) -> KlibMetadataProtoBuf.DescriptorUniqId?, + val descriptorFileId: (DeclarationDescriptor) -> Int?, + override val stringTable: StringTableImpl +) : KotlinSerializerExtensionBase(KlibMetadataSerializerProtocol) { + override fun shouldUseTypeTable(): Boolean = true 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? { + private fun uniqId(descriptor: DeclarationDescriptor): KlibMetadataProtoBuf.DescriptorUniqId? { return declarationTableHandler(descriptor) } override fun serializeTypeParameter(typeParameter: TypeParameterDescriptor, proto: ProtoBuf.TypeParameter.Builder) { - uniqId(typeParameter)?.let { proto.setExtension(JsKlibMetadataProtoBuf.typeParamUniqId, it) } + uniqId(typeParameter)?.let { proto.setExtension(KlibMetadataProtoBuf.typeParamUniqId, it) } super.serializeTypeParameter(typeParameter, proto) } override fun serializeTypeAlias(typeAlias: TypeAliasDescriptor, proto: ProtoBuf.TypeAlias.Builder) { - uniqId(typeAlias)?.let { proto.setExtension(JsKlibMetadataProtoBuf.typeAliasUniqId, it) } + uniqId(typeAlias)?.let { proto.setExtension(KlibMetadataProtoBuf.typeAliasUniqId, it) } super.serializeTypeAlias(typeAlias, proto) } override fun serializeEnumEntry(descriptor: ClassDescriptor, proto: ProtoBuf.EnumEntry.Builder) { - uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.enumEntryUniqId, it) } + uniqId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.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) } + uniqId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.constructorUniqId, it) } super.serializeConstructor(descriptor, proto, childSerializer) } @@ -62,12 +63,10 @@ class JsKlibMetadataSerializerExtension( versionRequirementTable: MutableVersionRequirementTable, childSerializer: DescriptorSerializer ) { - uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.classUniqId, it) } - val id = getFileId(descriptor) - if (id != null) { - proto.setExtension(JsKlibMetadataProtoBuf.classContainingFileId, id) - } + uniqId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.classUniqId, it) } + descriptorFileId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.classFile, it) } super.serializeClass(descriptor, proto, versionRequirementTable, childSerializer) + childSerializer.typeTable.serialize()?.let { proto.mergeTypeTable(it) } } override fun serializeProperty( @@ -76,11 +75,8 @@ class JsKlibMetadataSerializerExtension( versionRequirementTable: MutableVersionRequirementTable?, childSerializer: DescriptorSerializer ) { - uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.propertyUniqId, it) } - val id = getFileId(descriptor) - if (id != null) { - proto.setExtension(JsKlibMetadataProtoBuf.propertyContainingFileId, id) - } + uniqId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.propertyUniqId, it) } + descriptorFileId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.propertyFile, it) } super.serializeProperty(descriptor, proto, versionRequirementTable, childSerializer) } @@ -90,29 +86,11 @@ class JsKlibMetadataSerializerExtension( versionRequirementTable: MutableVersionRequirementTable?, childSerializer: DescriptorSerializer ) { - uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.functionUniqId, it) } - val id = getFileId(descriptor) - if (id != null) { - proto.setExtension(JsKlibMetadataProtoBuf.functionContainingFileId, id) - } + uniqId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.functionUniqId, it) } + descriptorFileId(descriptor)?.let { proto.setExtension(KlibMetadataProtoBuf.functionFile, it) } super.serializeFunction(descriptor, proto, versionRequirementTable, 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) + override fun releaseCoroutines() = + languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines) } diff --git a/compiler/ir/serialization.js/src/js.proto b/compiler/ir/serialization.js/src/js.proto deleted file mode 100644 index b307fb32063..00000000000 --- a/compiler/ir/serialization.js/src/js.proto +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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; -} - -extend org.jetbrains.kotlin.metadata.TypeAlias { - // TODO repeated org.jetbrains.kotlin.metadata.Annotation type_alias_annotation = 130; - optional DescriptorUniqId type_alias_uniq_id = 131; -} - -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/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index 1a2b98db16b..b8f4cda8d86 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -10,22 +10,20 @@ import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.psi.PsiElement import org.jetbrains.kotlin.backend.common.LoggingContext import org.jetbrains.kotlin.backend.common.serialization.DescriptorTable +import org.jetbrains.kotlin.backend.common.serialization.metadata.DynamicTypeDeserializer import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.builtins.functions.functionInterfacePackageFragmentProvider import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.languageVersionSettings import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrLinker import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsIrModuleSerializer import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsMangler -import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.newJsDescriptorUniqId -import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.* +import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataVersion +import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.KlibMetadataIncrementalSerializer import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.util.ExpectDeclarationRemover @@ -37,11 +35,13 @@ import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.konan.KonanVersionImpl import org.jetbrains.kotlin.konan.MetaVersion import org.jetbrains.kotlin.konan.properties.propertyList +import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.library.impl.buildKoltinLibrary import org.jetbrains.kotlin.library.impl.createKotlinLibrary +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult +import org.jetbrains.kotlin.library.resolver.TopologicalLibraryOrder 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.Psi2IrConfiguration @@ -49,8 +49,8 @@ import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator import org.jetbrains.kotlin.psi2ir.generators.GeneratorContext import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContextUtils -import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration import org.jetbrains.kotlin.storage.LockBasedStorageManager +import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.utils.DFS import java.io.File import org.jetbrains.kotlin.konan.file.File as KFile @@ -69,8 +69,6 @@ val KotlinLibrary.isBuiltIns: Boolean fun loadKlib(klibPath: String) = createKotlinLibrary(KFile(KFile(klibPath).absolutePath)) -internal val JS_KLIBRARY_CAPABILITY = ModuleDescriptor.Capability("JS KLIBRARY") - private val emptyLoggingContext = object : LoggingContext { override var inVerbosePhase = false @@ -86,7 +84,7 @@ fun generateKLib( project: Project, files: List, configuration: CompilerConfiguration, - allDependencies: List, + allDependencies: KotlinLibraryResolveResult, friendDependencies: List, outputKlibPath: String, nopack: Boolean @@ -136,7 +134,7 @@ fun generateKLib( psi2IrContext.bindingContext, files, outputKlibPath, - allDependencies, + allDependencies.getFullList(), moduleFragment, icData, nopack @@ -164,7 +162,7 @@ fun loadIr( project: Project, files: List, configuration: CompilerConfiguration, - allDependencies: List, + allDependencies: KotlinLibraryResolveResult, friendDependencies: List ): IrModuleInfo { val depsDescriptors = ModulesStructure(project, files, configuration, allDependencies, friendDependencies) @@ -177,7 +175,7 @@ fun loadIr( val deserializer = JsIrLinker(moduleDescriptor, JsMangler, emptyLoggingContext, irBuiltIns, symbolTable) - val deserializedModuleFragments = sortDependencies(allDependencies, depsDescriptors.descriptors).map { + val deserializedModuleFragments = sortDependencies(allDependencies.getFullList(), depsDescriptors.descriptors).map { deserializer.deserializeIrModuleHeader(depsDescriptors.getModuleDescriptor(it))!! } @@ -203,70 +201,29 @@ private fun GeneratorContext.generateModuleFragment(files: List, deseria Psi2IrTranslator(languageVersionSettings, configuration).generateModuleFragment(this, files, deserializer) -private fun loadKlibMetadataParts( - moduleId: KotlinLibrary -): JsKlibMetadataParts { - return JsKlibMetadataSerializationUtil.readModuleAsProto(moduleId.moduleHeaderData) -} - -val ModuleDescriptor.kotlinLibrary get() = this.getCapability(JS_KLIBRARY_CAPABILITY)!! - -private fun loadKlibMetadata( - parts: JsKlibMetadataParts, - moduleId: KotlinLibrary, - isBuiltIn: Boolean, - lookupTracker: LookupTracker, - storageManager: LockBasedStorageManager, - metadataVersion: JsKlibMetadataVersion, - languageVersionSettings: LanguageVersionSettings, - builtinsModule: ModuleDescriptorImpl?, - dependencies: List -): ModuleDescriptorImpl { - assert(isBuiltIn == (builtinsModule === null)) - val builtIns = builtinsModule?.builtIns ?: object : KotlinBuiltIns(storageManager) {} - val md = ModuleDescriptorImpl( - Name.special("<${moduleId.moduleName}>"), - storageManager, - builtIns, - capabilities = mapOf(JS_KLIBRARY_CAPABILITY to moduleId) - ) - if (isBuiltIn) builtIns.builtInsModule = md - val currentModuleFragmentProvider = createJsKlibMetadataPackageFragmentProvider( - storageManager, md, parts.header, parts.body, metadataVersion, - CompilerDeserializationConfiguration(languageVersionSettings), - lookupTracker - ) - - val packageFragmentProvider = if (isBuiltIn) { - val functionFragmentProvider = functionInterfacePackageFragmentProvider(storageManager, md) - CompositePackageFragmentProvider(listOf(functionFragmentProvider, currentModuleFragmentProvider)) - } else currentModuleFragmentProvider - - md.initialize(packageFragmentProvider) - md.setDependencies(listOf(md) + dependencies) - - return md -} +private fun createBuiltIns(storageManager: StorageManager) = object : KotlinBuiltIns(storageManager) {} +val JsFactories = KlibMetadataFactories(::createBuiltIns, DynamicTypeDeserializer) private class ModulesStructure( private val project: Project, private val files: List, val compilerConfiguration: CompilerConfiguration, - private val allDependencies: List, + val allDependencies: KotlinLibraryResolveResult, private val friendDependencies: List ) { - private val deserializedModuleParts: Map = - allDependencies.associateWith { loadKlibMetadataParts(it) } + val moduleDependencies: Map> = { + val result = mutableMapOf>() - fun findModuleByName(name: String): KotlinLibrary = - allDependencies.find { it.moduleName == name } ?: error("Module is not found: $name") - - val moduleDependencies: Map> = - deserializedModuleParts.mapValues { (_, parts) -> - parts.importedModules.map(::findModuleByName) + allDependencies.forEach { klib, _ -> + val dependencies = allDependencies.filterRoots { + it.library == klib + }.getFullList(TopologicalLibraryOrder) + result.put(klib, dependencies.minus(klib)) } + result + }() - val builtInsDep = allDependencies.find { it.isBuiltIns } + val builtInsDep = allDependencies.getFullList().find { it.isBuiltIns } fun runAnalysis(): JsAnalysisResult { val analysisResult = @@ -274,7 +231,7 @@ private class ModulesStructure( files, project, compilerConfiguration, - allDependencies.map { getModuleDescriptor(it) }, + allDependencies.getFullList().map { getModuleDescriptor(it) }, friendModuleDescriptors = friendDependencies.map { getModuleDescriptor(it) }, thisIsBuiltInsModule = builtInModuleDescriptor == null, customBuiltInsModule = builtInModuleDescriptor @@ -286,31 +243,29 @@ private class ModulesStructure( return analysisResult } - private val lookupTracker: LookupTracker = LookupTracker.DO_NOTHING - private val metadataVersion: JsKlibMetadataVersion = compilerConfiguration.metadataVersion private val languageVersionSettings: LanguageVersionSettings = compilerConfiguration.languageVersionSettings private val storageManager: LockBasedStorageManager = LockBasedStorageManager("ModulesStructure") private var runtimeModule: ModuleDescriptorImpl? = null + // TODO: these are roughly equivalent to KlibResolvedModuleDescriptorsFactoryImpl. Refactor me. val descriptors = mutableMapOf() fun getModuleDescriptor(current: KotlinLibrary): ModuleDescriptorImpl = descriptors.getOrPut(current) { - val parts = loadKlibMetadataParts(current) - val isBuiltIns = parts.importedModules.isEmpty() - loadKlibMetadata( - parts, + val isBuiltIns = current.unresolvedDependencies.isEmpty() + + val md = JsFactories.DefaultDeserializedDescriptorFactory.createDescriptorOptionalBuiltIns( current, - isBuiltIns, - lookupTracker, - storageManager, - metadataVersion, languageVersionSettings, - runtimeModule, - moduleDependencies.getValue(current).map { getModuleDescriptor(it) } - ).also { - if (isBuiltIns) runtimeModule = it - } + storageManager, + runtimeModule?.builtIns, + packageAccessHandler = null // TODO: This is a speed optimization used by Native. Don't bother for now. + ) + if (isBuiltIns) runtimeModule = md + + val dependencies = moduleDependencies.getValue(current).map { getModuleDescriptor(it) } + md.setDependencies(listOf(md) + dependencies) + md } val builtInModuleDescriptor = @@ -318,6 +273,7 @@ private class ModulesStructure( getModuleDescriptor(builtInsDep) else null // null in case compiling builtInModule itself + } private fun getDescriptorForElement( @@ -344,23 +300,20 @@ fun serializeModuleIntoKlib( val moduleDescriptor = moduleFragment.descriptor - val descriptorSelector = { declarationDescriptor: DeclarationDescriptor -> - val index = descriptorTable.get(declarationDescriptor) ?: error("No descriptor ID found for $declarationDescriptor") - newJsDescriptorUniqId(index) - } - val metadataVersion = configuration.metadataVersion val languageVersionSettings = configuration.languageVersionSettings + val metadataSerializer = KlibMetadataIncrementalSerializer( + languageVersionSettings, + metadataVersion, + descriptorTable) + fun serializeScope(fqName: FqName, memberScope: Collection): ByteArray { - return JsKlibMetadataSerializationUtil.serializeDescriptors( + return metadataSerializer.serializePackageFragment( bindingContext, moduleDescriptor, memberScope, - fqName, - languageVersionSettings, - metadataVersion, - descriptorSelector + fqName ).toByteArray() } @@ -393,25 +346,28 @@ fun serializeModuleIntoKlib( processCompiledFileData(VfsUtilCore.virtualToIoFile(ktFile.virtualFile), compiledKotlinFile) } - incrementalResultsConsumer?.run { - processHeader(JsKlibMetadataSerializationUtil.serializeHeader(moduleDescriptor, null, languageVersionSettings).toByteArray()) - } - val compiledKotlinFiles = cleanFiles + additionalFiles + val header = metadataSerializer.serializeHeader( + moduleDescriptor, + compiledKotlinFiles.map { it.irData.fqName }.distinct() + ).toByteArray() + incrementalResultsConsumer?.run { + processHeader(header) + } + val serializedMetadata = - JsKlibMetadataSerializationUtil.serializedMetadata( - moduleDescriptor, - languageVersionSettings, - dependencies.map { it.moduleName }, - compiledKotlinFiles.groupBy { it.irData.fqName }.map { (fqn, data) -> fqn to data.sortedBy { it.irData.path }.map { it.metadata } }.toMap() + metadataSerializer.serializedMetadata( + compiledKotlinFiles.groupBy { it.irData.fqName }.map { (fqn, data) -> fqn to data.sortedBy { it.irData.path }.map { it.metadata } }.toMap(), + header ) val fullSerializedIr = SerializedIrModule(compiledKotlinFiles.map { it.irData }) val abiVersion = KotlinAbiVersion.CURRENT + // DO NOT PUSH. Commonize me. val compilerVersion = KonanVersionImpl(MetaVersion.DEV, 1, 3, 0, -1) - val libraryVersion = "JSIR" + val libraryVersion = null val versions = KonanLibraryVersioning(abiVersion = abiVersion, libraryVersion = libraryVersion, compilerVersion = compilerVersion) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorReferenceDeserializer.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorReferenceDeserializer.kt index c554bae5059..7e7c519a75e 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorReferenceDeserializer.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorReferenceDeserializer.kt @@ -6,16 +6,15 @@ package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir import org.jetbrains.kotlin.backend.common.serialization.* -import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor -import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.backend.common.serialization.DescriptorReferenceDeserializer +import org.jetbrains.kotlin.backend.common.serialization.DescriptorUniqIdAware +import org.jetbrains.kotlin.backend.common.serialization.DeserializedDescriptorUniqIdAware import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns -import org.jetbrains.kotlin.name.FqName class JsDescriptorReferenceDeserializer( currentModule: ModuleDescriptor, mangler: KotlinMangler, builtIns: IrBuiltIns ) : DescriptorReferenceDeserializer(currentModule, mangler, builtIns, mutableMapOf()), - DescriptorUniqIdAware by JsDescriptorUniqIdAware + DescriptorUniqIdAware by DeserializedDescriptorUniqIdAware diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorUniqIdAware.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorUniqIdAware.kt deleted file mode 100644 index 69a85511437..00000000000 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsDescriptorUniqIdAware.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.ir - -import org.jetbrains.kotlin.backend.common.serialization.DescriptorUniqIdAware -import org.jetbrains.kotlin.backend.common.serialization.tryGetExtension -import org.jetbrains.kotlin.descriptors.DeclarationDescriptor -import org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf -import org.jetbrains.kotlin.serialization.deserialization.descriptors.* - -object JsDescriptorUniqIdAware: DescriptorUniqIdAware { - override fun DeclarationDescriptor.getUniqId(): Long? = when (this) { - is DeserializedClassDescriptor -> this.classProto.tryGetExtension(JsKlibMetadataProtoBuf.classUniqId) - is DeserializedSimpleFunctionDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.functionUniqId) - is DeserializedPropertyDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.propertyUniqId) - is DeserializedClassConstructorDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.constructorUniqId) - is DeserializedTypeParameterDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.typeParamUniqId) - is DeserializedTypeAliasDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.typeAliasUniqId) - else -> null - }?.index -} - -fun newJsDescriptorUniqId(index: Long): JsKlibMetadataProtoBuf.DescriptorUniqId = - JsKlibMetadataProtoBuf.DescriptorUniqId.newBuilder().setIndex(index).build() diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt index 453469fc405..8e1961361e1 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/ir/JsIrLinker.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.ir.backend.js.kotlinLibrary +import org.jetbrains.kotlin.descriptors.konan.kotlinLibrary import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.resolve.descriptorUtil.isPublishedApi @@ -23,7 +23,7 @@ class JsIrLinker( builtIns: IrBuiltIns, symbolTable: SymbolTable ) : KotlinIrLinker(logger, builtIns, symbolTable, emptyList(), null, PUBLIC_LOCAL_UNIQ_ID_EDGE), - DescriptorUniqIdAware by JsDescriptorUniqIdAware { + DescriptorUniqIdAware by DeserializedDescriptorUniqIdAware { override val descriptorReferenceDeserializer = JsDescriptorReferenceDeserializer(currentModule, mangler, builtIns) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt deleted file mode 100644 index 98c7616b140..00000000000 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFileRegistry.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt deleted file mode 100644 index ced2a171ef7..00000000000 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataFragmentProvider.kt +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.All, - 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/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt index f59588e36ab..47f26225561 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataPackageFragment.kt @@ -8,6 +8,7 @@ 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.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl import org.jetbrains.kotlin.name.ClassId @@ -22,14 +23,14 @@ class JsKlibMetadataPackageFragment( storageManager: StorageManager, module: ModuleDescriptor, proto: ProtoBuf.PackageFragment, - header: JsKlibMetadataProtoBuf.Header, + header: KlibMetadataProtoBuf.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) -> + proto.getExtension(KlibMetadataProtoBuf.packageFragmentFiles).fileList.withIndex().associate { (index, file) -> (if (file.hasId()) file.id else index) to FileHolder(file.annotationList) } @@ -48,7 +49,7 @@ class JsKlibMetadataPackageFragment( class JsContainerSource( private val fqName: FqName, - header: JsKlibMetadataProtoBuf.Header, + header: KlibMetadataProtoBuf.Header, configuration: DeserializationConfiguration ) : DeserializedContainerSource { val annotations: List = diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt deleted file mode 100644 index 221b1fa2dbc..00000000000 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializationUtil.kt +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.library.SerializedMetadata -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.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.io.OutputStream - -object JsKlibMetadataSerializationUtil { - - fun serializedMetadata( - module: ModuleDescriptor, - settings: LanguageVersionSettings, - importedModules: List, - fragments: Map> - ): SerializedMetadata { - val fragmentNames = mutableListOf() - val fragmentParts = mutableListOf>() - - for ((fqName, fragment) in fragments.entries.sortedBy { it.key }) { - fragmentNames += fqName - fragmentParts += fragment - } - - val stream = ByteArrayOutputStream() - - serializeHeader(module, null, settings).writeDelimitedTo(stream) - asLibrary().writeTo(stream) - stream.appendPackageFragments(fragments) - importedModules.forEach { - stream.writeProto(JsKlibMetadataProtoBuf.Library.IMPORTED_MODULE_FIELD_NUMBER, it.toByteArray()) - } - - val moduleLibrary = stream.toByteArray() - - return SerializedMetadata(moduleLibrary, fragmentParts, fragmentNames) - } - - private fun asLibrary(): JsKlibMetadataProtoBuf.Library { - return JsKlibMetadataProtoBuf.Library.newBuilder().build() - } - - private fun OutputStream.writeProto(fieldNumber: Int, content: ByteArray) { - // Message header - write((fieldNumber shl 3) or 2) - // Size varint - var size = content.size - while (size > 0x7F) { - write(0x80 or (size and 0x7F)) - size = size ushr 7 - } - write(size) - // Fragment itself - write(content) - } - - private fun OutputStream.appendPackageFragments(serializedFragments: Map>) { - for ((_, fragments) in serializedFragments.entries.sortedBy { it.key }) { - for (fragment in fragments) { - writeProto(JsKlibMetadataProtoBuf.Library.PACKAGE_FRAGMENT_FIELD_NUMBER, fragment) - } - } - } - - 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() - } - - 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() - } - - @JvmStatic - fun readModuleAsProto(metadata: ByteArray): JsKlibMetadataParts { - val inputStream = ByteArrayInputStream(metadata) - val header = JsKlibMetadataProtoBuf.Header.parseDelimitedFrom(inputStream, JsKlibMetadataSerializerProtocol.extensionRegistry) - val content = JsKlibMetadataProtoBuf.Library.parseFrom(inputStream, 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/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt deleted file mode 100644 index 345540e74a6..00000000000 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataSerializerProtocol.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.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 -) diff --git a/compiler/ir/serialization.js/test/GenerateIrRuntime.kt b/compiler/ir/serialization.js/test/GenerateIrRuntime.kt index 53eb68bdb5d..5c4fd711f7e 100644 --- a/compiler/ir/serialization.js/test/GenerateIrRuntime.kt +++ b/compiler/ir/serialization.js/test/GenerateIrRuntime.kt @@ -14,6 +14,10 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.KotlinLibrarySearchPathResolver +import org.jetbrains.kotlin.library.UnresolvedLibrary +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult +import org.jetbrains.kotlin.library.resolver.impl.libraryResolver import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource import org.jetbrains.kotlin.serialization.js.ModuleKind @@ -59,7 +63,7 @@ fun buildKLib( moduleName: String, sources: List, outputPath: String, - dependencies: List, + allDependencies: KotlinLibraryResolveResult, commonSources: List ) { generateKLib( @@ -72,7 +76,7 @@ fun buildKLib( file }, configuration = buildConfiguration(environment, moduleName), - allDependencies = dependencies, + allDependencies = allDependencies, friendDependencies = emptyList(), outputKlibPath = outputPath, nopack = true @@ -113,12 +117,18 @@ fun main(args: Array) { error("Please set path to .klm file: `-o some/dir/module-name.klm`") } - val name = outputPath.takeLastWhile { it != '/' } + val dependencyAbsolutePaths = dependencies.map{ File(it).absolutePath } + val unresolvedLibraries = dependencies.map { UnresolvedLibrary(it, null) } + // Configure the resolver to only understand absolute path libraries. + val libraryResolver = KotlinLibrarySearchPathResolver( + repositories = emptyList(), + directLibs = dependencyAbsolutePaths, + distributionKlib = null, + localKotlinDir = null, + skipCurrentDir = true + // TODO: pass logger attached to message collector here. + ).libraryResolver() + val resolvedLibraries = libraryResolver.resolveWithDependencies(unresolvedLibraries, true, true, true) - val dependencyKLibs = dependencies.map { - val file = File(it) - loadKlib(file.path) - } - - buildKLib(name.dropLast(4), listOfKtFilesFrom(inputFiles), outputPath, dependencyKLibs, listOfKtFilesFrom(commonSources)) + buildKLib(File(outputPath).absolutePath, listOfKtFilesFrom(inputFiles), outputPath, resolvedLibraries, listOfKtFilesFrom(commonSources)) } diff --git a/compiler/util-io/src/org/jetbrains/kotlin/konan/file/File.kt b/compiler/util-io/src/org/jetbrains/kotlin/konan/file/File.kt index dec5c085eeb..9305d282196 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/konan/file/File.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/konan/file/File.kt @@ -5,13 +5,12 @@ package org.jetbrains.kotlin.konan.file -import org.jetbrains.kotlin.konan.util.removeSuffixIfPresent +import org.jetbrains.kotlin.util.removeSuffixIfPresent import java.io.BufferedReader import java.io.InputStream import java.io.InputStreamReader import java.io.RandomAccessFile import java.lang.Exception -import java.net.URI import java.nio.MappedByteBuffer import java.nio.channels.FileChannel import java.nio.file.* diff --git a/compiler/util-io/src/org/jetbrains/kotlin/konan/properties/Properties.kt b/compiler/util-io/src/org/jetbrains/kotlin/konan/properties/Properties.kt index 03b15983497..b81ef17c54c 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/konan/properties/Properties.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/konan/properties/Properties.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.konan.properties import org.jetbrains.kotlin.konan.file.* -import org.jetbrains.kotlin.konan.util.parseSpaceSeparatedArgs +import org.jetbrains.kotlin.util.parseSpaceSeparatedArgs import java.io.ByteArrayOutputStream typealias Properties = java.util.Properties diff --git a/compiler/util-io/src/org/jetbrains/kotlin/konan/util/Util.kt b/compiler/util-io/src/org/jetbrains/kotlin/util/Util.kt similarity index 97% rename from compiler/util-io/src/org/jetbrains/kotlin/konan/util/Util.kt rename to compiler/util-io/src/org/jetbrains/kotlin/util/Util.kt index 2484b2c3488..b5034c8a8fd 100644 --- a/compiler/util-io/src/org/jetbrains/kotlin/konan/util/Util.kt +++ b/compiler/util-io/src/org/jetbrains/kotlin/util/Util.kt @@ -3,7 +3,7 @@ * 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.konan.util +package org.jetbrains.kotlin.util import kotlin.system.measureTimeMillis import org.jetbrains.kotlin.konan.file.* @@ -20,7 +20,8 @@ fun printMillisec(message: String, body: () -> T): T { fun profile(message: String, body: () -> Unit) = profileIf( System.getProperty("konan.profile")?.equals("true") ?: false, - message, body) + message, body +) fun profileIf(condition: Boolean, message: String, body: () -> Unit) = if (condition) printMillisec(message, body) else body() diff --git a/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt b/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt new file mode 100644 index 00000000000..12c0ce919ba --- /dev/null +++ b/compiler/util-io/src/org/jetbrains/kotlin/util/WithLogger.kt @@ -0,0 +1,24 @@ +package org.jetbrains.kotlin.util + +import kotlin.system.exitProcess + +interface Logger { + fun log(message: String) + fun error(message: String) + fun warning(message: String) + fun fatal(message: String): Nothing +} + +interface WithLogger { + val logger: Logger +} + +object DummyLogger : Logger { + override fun log(message: String) = println(message) + override fun error(message: String) = println("e: $message") + override fun warning(message: String) = println("w: $message") + override fun fatal(message: String): Nothing { + println("e: $message") + exitProcess(1) + } +} \ No newline at end of file diff --git a/compiler/util-klib-metadata/build.gradle.kts b/compiler/util-klib-metadata/build.gradle.kts new file mode 100644 index 00000000000..66c73da6743 --- /dev/null +++ b/compiler/util-klib-metadata/build.gradle.kts @@ -0,0 +1,24 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +description = "Common klib metadata reader and writer" + +dependencies { + compile(kotlinStdlib()) + compile(project(":compiler:frontend")) + compile(project(":core:deserialization")) + compile(project(":compiler:serialization")) + compile(project(":kotlin-util-io")) + compile(project(":kotlin-util-klib")) +} + +sourceSets { + "main" { projectDefault() } + "test" { none() } +} + +publish() + +standardPublicJars() diff --git a/compiler/ir/backend.js/src/js.proto b/compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto similarity index 64% rename from compiler/ir/backend.js/src/js.proto rename to compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto index b307fb32063..45fccb3d531 100644 --- a/compiler/ir/backend.js/src/js.proto +++ b/compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto @@ -14,37 +14,38 @@ * limitations under the License. */ -package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata; +package org.jetbrains.kotlin.library.metadata; import "core/metadata/src/metadata.proto"; -option java_outer_classname = "JsKlibMetadataProtoBuf"; +option java_outer_classname = "KlibMetadataProtoBuf"; option optimize_for = LITE_RUNTIME; message Header { + required string module_name = 1; /* - preRelease + 0x1 = 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 int32 flags = 2; 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; + repeated string package_fragment_name = 7; + repeated string empty_package = 8; + + // TODO: Unused. + // TODO: We need to have backend specific extension for versionings. + // (patch << 16) + (minor << 8) + major + // optional int32 js_code_binary_version = 3 [default = 1]; + } 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; + required string name = 2; + repeated org.jetbrains.kotlin.metadata.Annotation annotation = 3; } message Files { @@ -55,73 +56,60 @@ message DescriptorUniqId { required int64 index = 1; } - extend org.jetbrains.kotlin.metadata.Package { - optional int32 package_fq_name = 131; + optional int32 package_fq_name = 171; } 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; + repeated org.jetbrains.kotlin.metadata.Annotation class_annotation = 170; + optional int32 class_file = 175; + optional DescriptorUniqId class_uniq_id = 171; } extend org.jetbrains.kotlin.metadata.Constructor { - repeated org.jetbrains.kotlin.metadata.Annotation constructor_annotation = 130; - optional DescriptorUniqId constructor_uniq_id = 131; + repeated org.jetbrains.kotlin.metadata.Annotation constructor_annotation = 170; + optional DescriptorUniqId constructor_uniq_id = 172; } 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; + repeated org.jetbrains.kotlin.metadata.Annotation function_annotation = 170; + optional int32 function_file = 172; + optional DescriptorUniqId function_uniq_id = 173; } 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; - + repeated org.jetbrains.kotlin.metadata.Annotation property_annotation = 170; + repeated org.jetbrains.kotlin.metadata.Annotation property_getter_annotation = 177; + repeated org.jetbrains.kotlin.metadata.Annotation property_setter_annotation = 178; + optional org.jetbrains.kotlin.metadata.Annotation.Argument.Value compile_time_value = 173; + optional int32 property_file = 176; + optional DescriptorUniqId property_uniq_id = 179; } 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; + repeated org.jetbrains.kotlin.metadata.Annotation enum_entry_annotation = 170; + optional int32 enum_entry_ordinal = 171; + optional DescriptorUniqId enum_entry_uniq_id = 172; } extend org.jetbrains.kotlin.metadata.Type { - repeated org.jetbrains.kotlin.metadata.Annotation type_annotation = 130; + repeated org.jetbrains.kotlin.metadata.Annotation type_annotation = 170; } extend org.jetbrains.kotlin.metadata.TypeParameter { - repeated org.jetbrains.kotlin.metadata.Annotation type_parameter_annotation = 130; - optional DescriptorUniqId type_param_uniq_id = 131; + repeated org.jetbrains.kotlin.metadata.Annotation type_parameter_annotation = 170; + optional DescriptorUniqId type_param_uniq_id = 171; } extend org.jetbrains.kotlin.metadata.PackageFragment { - optional Files package_fragment_files = 130; + optional Files package_fragment_files = 170; + optional bool is_empty = 172; + optional string fq_name = 173; + // id in StringTable + repeated int32 class_name = 174 [packed = true]; } extend org.jetbrains.kotlin.metadata.TypeAlias { // TODO repeated org.jetbrains.kotlin.metadata.Annotation type_alias_annotation = 130; optional DescriptorUniqId type_alias_uniq_id = 131; -} - -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; -} +} \ No newline at end of file diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanClassDataFinder.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataClassDataFinder.kt similarity index 60% rename from konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanClassDataFinder.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataClassDataFinder.kt index 4d26ea5c772..ed02cd40ced 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanClassDataFinder.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataClassDataFinder.kt @@ -3,33 +3,33 @@ * 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.serialization.konan +package org.jetbrains.kotlin.library.metadata +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion import org.jetbrains.kotlin.descriptors.SourceElement +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.metadata.deserialization.NameResolver -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.serialization.deserialization.ClassData import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder import org.jetbrains.kotlin.serialization.deserialization.getClassId -class KonanClassDataFinder( - private val fragment: KonanProtoBuf.LinkDataPackageFragment, +class KlibMetadataClassDataFinder( + private val fragment: org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, private val nameResolver: NameResolver ) : ClassDataFinder { + val nameList = fragment.getExtension(KlibMetadataProtoBuf.className).orEmpty() override fun findClassData(classId: ClassId): ClassData? { - val proto = fragment.classes - val nameList = proto.classNameList val index = nameList.indexOfFirst { nameResolver.getClassId(it) == classId } if (index == -1) { return null } - val foundClass = proto.getClasses(index) ?: error("Could not find data for serialized class $classId") + val foundClass = fragment.getClass_(index) ?: error("Could not find data for serialized class $classId") /* TODO: binary version supposed to be read from protobuf. */ - return ClassData(nameResolver, foundClass, KonanMetadataVersion.INSTANCE, SourceElement.NO_SOURCE) + return ClassData(nameResolver, foundClass, KlibMetadataVersion.INSTANCE, SourceElement.NO_SOURCE) } } diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializationUtils.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializationUtils.kt new file mode 100644 index 00000000000..1c5ca751ac6 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializationUtils.kt @@ -0,0 +1,30 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.library.metadata + +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.metadata.ProtoBuf + +fun parsePackageFragment(packageMetadata: ByteArray): ProtoBuf.PackageFragment = + ProtoBuf.PackageFragment.parseFrom(packageMetadata, KlibMetadataSerializerProtocol.extensionRegistry) + +fun parseModuleHeader(libraryMetadata: ByteArray): KlibMetadataProtoBuf.Header = + KlibMetadataProtoBuf.Header.parseFrom(libraryMetadata, KlibMetadataSerializerProtocol.extensionRegistry) + +interface PackageAccessHandler { + fun loadModuleHeader( + library: KotlinLibrary + ): KlibMetadataProtoBuf.Header = parseModuleHeader(library.moduleHeaderData) + + fun loadPackageFragment( + library: KotlinLibrary, + packageFqName: String, + partName: String + ): ProtoBuf.PackageFragment = parsePackageFragment(library.packageMetadata(packageFqName, partName)) +} + +object SimplePackageAccessHandler : PackageAccessHandler + diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializedPackageFragmentsFactory.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializedPackageFragmentsFactory.kt new file mode 100644 index 00000000000..e4958926c21 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataDeserializedPackageFragmentsFactory.kt @@ -0,0 +1,24 @@ +package org.jetbrains.kotlin.backend.common.serialization.metadata + +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.metadata.KlibMetadataPackageFragment +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler +import org.jetbrains.kotlin.storage.StorageManager + +interface KlibMetadataDeserializedPackageFragmentsFactory { + fun createDeserializedPackageFragments( + library: KotlinLibrary, + packageFragmentNames: List, + moduleDescriptor: ModuleDescriptor, + packageAccessedHandler: PackageAccessHandler?, + storageManager: StorageManager + ): List + + fun createSyntheticPackageFragments( + library: KotlinLibrary, + deserializedPackageFragments: List, + moduleDescriptor: ModuleDescriptor + ): List +} \ No newline at end of file diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataFactories.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataFactories.kt new file mode 100644 index 00000000000..e8d72986740 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataFactories.kt @@ -0,0 +1,62 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.konan.util + +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataDeserializedPackageFragmentsFactory +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataModuleDescriptorFactory +import org.jetbrains.kotlin.backend.common.serialization.metadata.impl.KlibMetadataDeserializedPackageFragmentsFactoryImpl +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.descriptors.konan.KlibModuleDescriptorFactory +import org.jetbrains.kotlin.descriptors.konan.impl.KlibModuleDescriptorFactoryImpl +import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeDeserializer +import org.jetbrains.kotlin.serialization.konan.KlibResolvedModuleDescriptorsFactory +import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl +import org.jetbrains.kotlin.serialization.konan.impl.KlibResolvedModuleDescriptorsFactoryImpl +import org.jetbrains.kotlin.storage.StorageManager + +/** + * The default Kotlin/Native factories. + */ +open class KlibMetadataFactories( + createBuiltIns:(StorageManager) -> KotlinBuiltIns, + val flexibleTypeDeserializer: FlexibleTypeDeserializer +) { + + /** + * The default [KlibModuleDescriptorFactory] factory instance. + */ + val DefaultDescriptorFactory: KlibModuleDescriptorFactory = KlibModuleDescriptorFactoryImpl(createBuiltIns) + + /** + * The default [KlibMetadataDeserializedPackageFragmentsFactory] factory instance. + */ + val DefaultPackageFragmentsFactory: KlibMetadataDeserializedPackageFragmentsFactory = + KlibMetadataDeserializedPackageFragmentsFactoryImpl() + + /** + * The default [KlibMetadataModuleDescriptorFactory] factory instance. + */ + val DefaultDeserializedDescriptorFactory: KlibMetadataModuleDescriptorFactory = + createDefaultKonanDeserializedModuleDescriptorFactory( + DefaultDescriptorFactory, DefaultPackageFragmentsFactory + ) + + /** + * The default [KlibResolvedModuleDescriptorsFactory] factory instance. + */ + val DefaultResolvedDescriptorsFactory: KlibResolvedModuleDescriptorsFactory = + createDefaultKonanResolvedModuleDescriptorsFactory(DefaultDeserializedDescriptorFactory) + + fun createDefaultKonanDeserializedModuleDescriptorFactory( + descriptorFactory: KlibModuleDescriptorFactory, + packageFragmentsFactory: KlibMetadataDeserializedPackageFragmentsFactory + ): KlibMetadataModuleDescriptorFactory = + KlibMetadataModuleDescriptorFactoryImpl(descriptorFactory, packageFragmentsFactory, flexibleTypeDeserializer) + + fun createDefaultKonanResolvedModuleDescriptorsFactory( + moduleDescriptorFactory: KlibMetadataModuleDescriptorFactory + ): KlibResolvedModuleDescriptorsFactory = KlibResolvedModuleDescriptorsFactoryImpl(moduleDescriptorFactory) +} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanMetadataVersion.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt similarity index 63% rename from konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanMetadataVersion.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt index 3be5086f0b5..7ef03c6e38d 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanMetadataVersion.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataMetadataVersion.kt @@ -3,19 +3,19 @@ * 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.serialization.konan +package org.jetbrains.kotlin.backend.common.serialization.metadata import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion -class KonanMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) { +class KlibMetadataVersion(vararg numbers: Int) : BinaryVersion(*numbers) { override fun isCompatible(): Boolean = this.major == 1 && this.minor == 0 companion object { @JvmField - val INSTANCE = KonanMetadataVersion(1, 0, 0) + val INSTANCE = KlibMetadataVersion(1, 0, 0) @JvmField - val INVALID_VERSION = KonanMetadataVersion() + val INVALID_VERSION = KlibMetadataVersion() } } diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataModuleDescriptorFactory.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataModuleDescriptorFactory.kt new file mode 100644 index 00000000000..8b621c732bd --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataModuleDescriptorFactory.kt @@ -0,0 +1,59 @@ +package org.jetbrains.kotlin.backend.common.serialization.metadata + +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentProvider +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.descriptors.konan.KlibModuleDescriptorFactory +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler +import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration +import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeDeserializer +import org.jetbrains.kotlin.storage.StorageManager + +interface KlibMetadataModuleDescriptorFactory { + + val descriptorFactory: KlibModuleDescriptorFactory + val packageFragmentsFactory: KlibMetadataDeserializedPackageFragmentsFactory + val flexibleTypeDeserializer: FlexibleTypeDeserializer + + fun createDescriptor( + library: KotlinLibrary, + languageVersionSettings: LanguageVersionSettings, + storageManager: StorageManager, + builtIns: KotlinBuiltIns, + packageAccessHandler: PackageAccessHandler? + ) = createDescriptorOptionalBuiltIns( + library, + languageVersionSettings, + storageManager, + builtIns, + packageAccessHandler + ) + + fun createDescriptorAndNewBuiltIns( + library: KotlinLibrary, + languageVersionSettings: LanguageVersionSettings, + storageManager: StorageManager, + packageAccessHandler: PackageAccessHandler? + ) = createDescriptorOptionalBuiltIns(library, languageVersionSettings, storageManager, null, packageAccessHandler) + + fun createDescriptorOptionalBuiltIns( + library: KotlinLibrary, + languageVersionSettings: LanguageVersionSettings, + storageManager: StorageManager, + builtIns: KotlinBuiltIns?, + packageAccessHandler: PackageAccessHandler? + ): ModuleDescriptorImpl + + fun createPackageFragmentProvider( + library: KotlinLibrary, + packageAccessHandler: PackageAccessHandler?, + packageFragmentNames: List, + storageManager: StorageManager, + moduleDescriptor: ModuleDescriptor, + configuration: DeserializationConfiguration, + compositePackageFragmentAddend: PackageFragmentProvider? + ): PackageFragmentProvider +} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanPackageFragment.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataPackageFragment.kt similarity index 69% rename from konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanPackageFragment.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataPackageFragment.kt index f93b445b380..b608ac382c5 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanPackageFragment.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataPackageFragment.kt @@ -3,13 +3,13 @@ * 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.serialization.konan +package org.jetbrains.kotlin.library.metadata +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataVersion import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.PackageAccessedHandler +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents @@ -19,13 +19,13 @@ import org.jetbrains.kotlin.serialization.deserialization.getClassId import org.jetbrains.kotlin.serialization.deserialization.getName import org.jetbrains.kotlin.storage.StorageManager -class KonanPackageFragment( +class KlibMetadataPackageFragment( fqName: FqName, - private val library: KonanLibrary, - private val packageAccessedHandler: PackageAccessedHandler?, + private val library: KotlinLibrary, + private val packageAccessHandler: PackageAccessHandler?, storageManager: StorageManager, module: ModuleDescriptor, - partName: String + private val partName: String ) : DeserializedPackageFragment(fqName, storageManager, module) { lateinit var components: DeserializationComponents @@ -36,17 +36,20 @@ class KonanPackageFragment( // The proto field is lazy so that we can load only needed // packages from the library. - private val protoForNames: KonanProtoBuf.LinkDataPackageFragment by lazy { library.packageMetadata(fqName.asString(), partName) } + private val protoForNames: ProtoBuf.PackageFragment by lazy { + (packageAccessHandler ?: SimplePackageAccessHandler).loadPackageFragment(library, fqName.asString(), partName) + } - val proto: KonanProtoBuf.LinkDataPackageFragment - get() = protoForNames.also { packageAccessedHandler?.markPackageAccessed(fqName) } + // TODO: Do we really need both 'protoForNames' and 'proto' today? + val proto: ProtoBuf.PackageFragment + get() = protoForNames private val nameResolver by lazy { - NameResolverImpl(protoForNames.stringTable, protoForNames.nameTable) + NameResolverImpl(protoForNames.strings, protoForNames.qualifiedNames) } override val classDataFinder by lazy { - KonanClassDataFinder(proto, nameResolver) + KlibMetadataClassDataFinder(proto, nameResolver) } private val _memberScope by lazy { @@ -55,10 +58,12 @@ class KonanPackageFragment( this, proto.getPackage(), nameResolver, - KonanMetadataVersion.INSTANCE, + KlibMetadataVersion.INSTANCE, /* containerSource = */ null, components - ) { loadClassNames() } + ) { + loadClassNames() + } } override fun getMemberScope(): DeserializedPackageMemberScope = _memberScope @@ -74,7 +79,7 @@ class KonanPackageFragment( private fun loadClassNames(): Collection { - val classNameList = protoForNames.classes.classNameList + val classNameList = protoForNames.getExtension(KlibMetadataProtoBuf.className).orEmpty() val names = classNameList.mapNotNull { val classId = nameResolver.getClassId(it) @@ -84,4 +89,4 @@ class KonanPackageFragment( return names } -} +} \ No newline at end of file diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataProtoBuf.java similarity index 53% rename from compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataProtoBuf.java index d7a4e448469..9880df23cd0 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataProtoBuf.java +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataProtoBuf.java @@ -1,89 +1,76 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: compiler/ir/serialization.js/src/js.proto +// source: KlibMetadataProtoBuf.proto -package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata; +package org.jetbrains.kotlin.library.metadata; -public final class JsKlibMetadataProtoBuf { - private JsKlibMetadataProtoBuf() {} +public final class KlibMetadataProtoBuf { + private KlibMetadataProtoBuf() {} 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); - registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeAliasUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.packageFqName); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.classAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.classFile); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.classUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.constructorAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.constructorUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.functionAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.functionFile); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.functionUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.propertyAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.propertyGetterAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.propertySetterAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.compileTimeValue); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.propertyFile); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.propertyUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.enumEntryAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.enumEntryOrdinal); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.enumEntryUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.parameterAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.valueParamUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.typeAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.typeParameterAnnotation); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.typeParamUniqId); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.packageFragmentFiles); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.isEmpty); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.fqName); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.className); + registry.add(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.typeAliasUniqId); } public interface HeaderOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.library.metadata.Header) org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { /** - * optional int32 flags = 1; + * required string module_name = 1; + */ + boolean hasModuleName(); + /** + * required string module_name = 1; + */ + java.lang.String getModuleName(); + /** + * required string module_name = 1; + */ + org.jetbrains.kotlin.protobuf.ByteString + getModuleNameBytes(); + + /** + * optional int32 flags = 2; * *
-     *preRelease
+     *0x1 = preRelease
      * 
*/ boolean hasFlags(); /** - * optional int32 flags = 1; + * optional int32 flags = 2; * *
-     *preRelease
+     *0x1 = 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; */ @@ -127,13 +114,51 @@ public final class JsKlibMetadataProtoBuf { * */ int getAnnotationCount(); + + /** + * repeated string package_fragment_name = 7; + */ + org.jetbrains.kotlin.protobuf.ProtocolStringList + getPackageFragmentNameList(); + /** + * repeated string package_fragment_name = 7; + */ + int getPackageFragmentNameCount(); + /** + * repeated string package_fragment_name = 7; + */ + java.lang.String getPackageFragmentName(int index); + /** + * repeated string package_fragment_name = 7; + */ + org.jetbrains.kotlin.protobuf.ByteString + getPackageFragmentNameBytes(int index); + + /** + * repeated string empty_package = 8; + */ + org.jetbrains.kotlin.protobuf.ProtocolStringList + getEmptyPackageList(); + /** + * repeated string empty_package = 8; + */ + int getEmptyPackageCount(); + /** + * repeated string empty_package = 8; + */ + java.lang.String getEmptyPackage(int index); + /** + * repeated string empty_package = 8; + */ + org.jetbrains.kotlin.protobuf.ByteString + getEmptyPackageBytes(int index); } /** - * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header} + * Protobuf type {@code org.jetbrains.kotlin.library.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) + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.library.metadata.Header) HeaderOrBuilder { // Use Header.newBuilder() to construct. private Header(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { @@ -162,7 +187,7 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.protobuf.ByteString.newOutput(); org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( - unknownFieldsOutput, 1); + unknownFieldsOutput); try { boolean done = false; while (!done) { @@ -178,25 +203,20 @@ public final class JsKlibMetadataProtoBuf { } break; } - case 8: { + case 10: { + org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); bitField0_ |= 0x00000001; - flags_ = input.readInt32(); + moduleName_ = bs; break; } case 16: { bitField0_ |= 0x00000002; - jsCodeBinaryVersion_ = input.readInt32(); - break; - } - case 26: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000004; - packageFqName_ = bs; + flags_ = input.readInt32(); break; } case 34: { org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder subBuilder = null; - if (((bitField0_ & 0x00000008) == 0x00000008)) { + if (((bitField0_ & 0x00000004) == 0x00000004)) { subBuilder = strings_.toBuilder(); } strings_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.PARSER, extensionRegistry); @@ -204,12 +224,12 @@ public final class JsKlibMetadataProtoBuf { subBuilder.mergeFrom(strings_); strings_ = subBuilder.buildPartial(); } - bitField0_ |= 0x00000008; + bitField0_ |= 0x00000004; break; } case 42: { org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder subBuilder = null; - if (((bitField0_ & 0x00000010) == 0x00000010)) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { subBuilder = qualifiedNames_.toBuilder(); } qualifiedNames_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); @@ -217,17 +237,35 @@ public final class JsKlibMetadataProtoBuf { subBuilder.mergeFrom(qualifiedNames_); qualifiedNames_ = subBuilder.buildPartial(); } - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000008; break; } case 50: { - if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { annotation_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000020; + mutable_bitField0_ |= 0x00000010; } annotation_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.PARSER, extensionRegistry)); break; } + case 58: { + org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + packageFragmentName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000020; + } + packageFragmentName_.add(bs); + break; + } + case 66: { + org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); + if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) { + emptyPackage_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000040; + } + emptyPackage_.add(bs); + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -236,9 +274,15 @@ public final class JsKlibMetadataProtoBuf { throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( e.getMessage()).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { annotation_ = java.util.Collections.unmodifiableList(annotation_); } + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + packageFragmentName_ = packageFragmentName_.getUnmodifiableView(); + } + if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) { + emptyPackage_ = emptyPackage_.getUnmodifiableView(); + } try { unknownFieldsCodedOutput.flush(); } catch (java.io.IOException e) { @@ -265,65 +309,19 @@ public final class JsKlibMetadataProtoBuf { } private int bitField0_; - public static final int FLAGS_FIELD_NUMBER = 1; - private int flags_; + public static final int MODULE_NAME_FIELD_NUMBER = 1; + private java.lang.Object moduleName_; /** - * optional int32 flags = 1; - * - *
-     *preRelease
-     * 
+ * required string module_name = 1; */ - public boolean hasFlags() { + public boolean hasModuleName() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * optional int32 flags = 1; - * - *
-     *preRelease
-     * 
+ * required string module_name = 1; */ - 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_; + public java.lang.String getModuleName() { + java.lang.Object ref = moduleName_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { @@ -331,35 +329,58 @@ public final class JsKlibMetadataProtoBuf { (org.jetbrains.kotlin.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (bs.isValidUtf8()) { - packageFqName_ = s; + moduleName_ = s; } return s; } } /** - * optional string package_fq_name = 3; + * required string module_name = 1; */ public org.jetbrains.kotlin.protobuf.ByteString - getPackageFqNameBytes() { - java.lang.Object ref = packageFqName_; + getModuleNameBytes() { + java.lang.Object ref = moduleName_; if (ref instanceof java.lang.String) { org.jetbrains.kotlin.protobuf.ByteString b = org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - packageFqName_ = b; + moduleName_ = b; return b; } else { return (org.jetbrains.kotlin.protobuf.ByteString) ref; } } + public static final int FLAGS_FIELD_NUMBER = 2; + private int flags_; + /** + * optional int32 flags = 2; + * + *
+     *0x1 = preRelease
+     * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional int32 flags = 2; + * + *
+     *0x1 = preRelease
+     * 
+ */ + public int getFlags() { + return flags_; + } + 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); + return ((bitField0_ & 0x00000004) == 0x00000004); } /** * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; @@ -374,7 +395,7 @@ public final class JsKlibMetadataProtoBuf { * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; */ public boolean hasQualifiedNames() { - return ((bitField0_ & 0x00000010) == 0x00000010); + return ((bitField0_ & 0x00000008) == 0x00000008); } /** * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; @@ -438,13 +459,72 @@ public final class JsKlibMetadataProtoBuf { return annotation_.get(index); } + public static final int PACKAGE_FRAGMENT_NAME_FIELD_NUMBER = 7; + private org.jetbrains.kotlin.protobuf.LazyStringList packageFragmentName_; + /** + * repeated string package_fragment_name = 7; + */ + public org.jetbrains.kotlin.protobuf.ProtocolStringList + getPackageFragmentNameList() { + return packageFragmentName_; + } + /** + * repeated string package_fragment_name = 7; + */ + public int getPackageFragmentNameCount() { + return packageFragmentName_.size(); + } + /** + * repeated string package_fragment_name = 7; + */ + public java.lang.String getPackageFragmentName(int index) { + return packageFragmentName_.get(index); + } + /** + * repeated string package_fragment_name = 7; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getPackageFragmentNameBytes(int index) { + return packageFragmentName_.getByteString(index); + } + + public static final int EMPTY_PACKAGE_FIELD_NUMBER = 8; + private org.jetbrains.kotlin.protobuf.LazyStringList emptyPackage_; + /** + * repeated string empty_package = 8; + */ + public org.jetbrains.kotlin.protobuf.ProtocolStringList + getEmptyPackageList() { + return emptyPackage_; + } + /** + * repeated string empty_package = 8; + */ + public int getEmptyPackageCount() { + return emptyPackage_.size(); + } + /** + * repeated string empty_package = 8; + */ + public java.lang.String getEmptyPackage(int index) { + return emptyPackage_.get(index); + } + /** + * repeated string empty_package = 8; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getEmptyPackageBytes(int index) { + return emptyPackage_.getByteString(index); + } + private void initFields() { + moduleName_ = ""; 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(); + packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -452,6 +532,10 @@ public final class JsKlibMetadataProtoBuf { if (isInitialized == 1) return true; if (isInitialized == 0) return false; + if (!hasModuleName()) { + memoizedIsInitialized = 0; + return false; + } if (hasQualifiedNames()) { if (!getQualifiedNames().isInitialized()) { memoizedIsInitialized = 0; @@ -472,23 +556,26 @@ public final class JsKlibMetadataProtoBuf { throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeInt32(1, flags_); + output.writeBytes(1, getModuleNameBytes()); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeInt32(2, jsCodeBinaryVersion_); + output.writeInt32(2, flags_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBytes(3, getPackageFqNameBytes()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeMessage(4, strings_); } - if (((bitField0_ & 0x00000010) == 0x00000010)) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeMessage(5, qualifiedNames_); } for (int i = 0; i < annotation_.size(); i++) { output.writeMessage(6, annotation_.get(i)); } + for (int i = 0; i < packageFragmentName_.size(); i++) { + output.writeBytes(7, packageFragmentName_.getByteString(i)); + } + for (int i = 0; i < emptyPackage_.size(); i++) { + output.writeBytes(8, emptyPackage_.getByteString(i)); + } output.writeRawBytes(unknownFields); } @@ -500,21 +587,17 @@ public final class JsKlibMetadataProtoBuf { size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeInt32Size(1, flags_); + .computeBytesSize(1, getModuleNameBytes()); } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeInt32Size(2, jsCodeBinaryVersion_); + .computeInt32Size(2, flags_); } 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)) { + if (((bitField0_ & 0x00000008) == 0x00000008)) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(5, qualifiedNames_); } @@ -522,6 +605,24 @@ public final class JsKlibMetadataProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(6, annotation_.get(i)); } + { + int dataSize = 0; + for (int i = 0; i < packageFragmentName_.size(); i++) { + dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeBytesSizeNoTag(packageFragmentName_.getByteString(i)); + } + size += dataSize; + size += 1 * getPackageFragmentNameList().size(); + } + { + int dataSize = 0; + for (int i = 0; i < emptyPackage_.size(); i++) { + dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeBytesSizeNoTag(emptyPackage_.getByteString(i)); + } + size += dataSize; + size += 1 * getEmptyPackageList().size(); + } size += unknownFields.size(); memoizedSerializedSize = size; return size; @@ -534,53 +635,53 @@ public final class JsKlibMetadataProtoBuf { return super.writeReplace(); } - public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Header parseFrom( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header parseFrom( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -589,21 +690,21 @@ public final class JsKlibMetadataProtoBuf { 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) { + public static Builder newBuilder(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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} + * Protobuf type {@code org.jetbrains.kotlin.library.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> + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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() + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.library.metadata.Header) + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.HeaderOrBuilder { + // Construct using org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -616,18 +717,20 @@ public final class JsKlibMetadataProtoBuf { public Builder clear() { super.clear(); - flags_ = 0; + moduleName_ = ""; bitField0_ = (bitField0_ & ~0x00000001); - jsCodeBinaryVersion_ = 1; + flags_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - packageFqName_ = ""; - bitField0_ = (bitField0_ & ~0x00000004); strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000008); + bitField0_ = (bitField0_ & ~0x00000004); qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000010); + bitField0_ = (bitField0_ & ~0x00000008); annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000010); + packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000020); + emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -635,64 +738,67 @@ public final class JsKlibMetadataProtoBuf { 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.library.metadata.KlibMetadataProtoBuf.Header getDefaultInstanceForType() { + return org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header build() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header buildPartial() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header result = new org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } - result.flags_ = flags_; + result.moduleName_ = moduleName_; if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.jsCodeBinaryVersion_ = jsCodeBinaryVersion_; + result.flags_ = flags_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.packageFqName_ = packageFqName_; + result.strings_ = strings_; 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)) { + if (((bitField0_ & 0x00000010) == 0x00000010)) { annotation_ = java.util.Collections.unmodifiableList(annotation_); - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000010); } result.annotation_ = annotation_; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + packageFragmentName_ = packageFragmentName_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.packageFragmentName_ = packageFragmentName_; + if (((bitField0_ & 0x00000040) == 0x00000040)) { + emptyPackage_ = emptyPackage_.getUnmodifiableView(); + bitField0_ = (bitField0_ & ~0x00000040); + } + result.emptyPackage_ = emptyPackage_; 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; + public Builder mergeFrom(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header other) { + if (other == org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header.getDefaultInstance()) return this; + if (other.hasModuleName()) { + bitField0_ |= 0x00000001; + moduleName_ = other.moduleName_; + + } 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()); } @@ -702,12 +808,32 @@ public final class JsKlibMetadataProtoBuf { if (!other.annotation_.isEmpty()) { if (annotation_.isEmpty()) { annotation_ = other.annotation_; - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000010); } else { ensureAnnotationIsMutable(); annotation_.addAll(other.annotation_); } + } + if (!other.packageFragmentName_.isEmpty()) { + if (packageFragmentName_.isEmpty()) { + packageFragmentName_ = other.packageFragmentName_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensurePackageFragmentNameIsMutable(); + packageFragmentName_.addAll(other.packageFragmentName_); + } + + } + if (!other.emptyPackage_.isEmpty()) { + if (emptyPackage_.isEmpty()) { + emptyPackage_ = other.emptyPackage_; + bitField0_ = (bitField0_ & ~0x00000040); + } else { + ensureEmptyPackageIsMutable(); + emptyPackage_.addAll(other.emptyPackage_); + } + } setUnknownFields( getUnknownFields().concat(other.unknownFields)); @@ -715,6 +841,10 @@ public final class JsKlibMetadataProtoBuf { } public final boolean isInitialized() { + if (!hasModuleName()) { + + return false; + } if (hasQualifiedNames()) { if (!getQualifiedNames().isInitialized()) { @@ -734,11 +864,11 @@ public final class JsKlibMetadataProtoBuf { 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + parsedMessage = (org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Header) e.getUnfinishedMessage(); throw e; } finally { if (parsedMessage != null) { @@ -749,120 +879,24 @@ public final class JsKlibMetadataProtoBuf { } private int bitField0_; - private int flags_ ; + private java.lang.Object moduleName_ = ""; /** - * optional int32 flags = 1; - * - *
-       *preRelease
-       * 
+ * required string module_name = 1; */ - public boolean hasFlags() { + public boolean hasModuleName() { return ((bitField0_ & 0x00000001) == 0x00000001); } /** - * optional int32 flags = 1; - * - *
-       *preRelease
-       * 
+ * required string module_name = 1; */ - 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_; + public java.lang.String getModuleName() { + java.lang.Object ref = moduleName_; 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; + moduleName_ = s; } return s; } else { @@ -870,53 +904,101 @@ public final class JsKlibMetadataProtoBuf { } } /** - * optional string package_fq_name = 3; + * required string module_name = 1; */ public org.jetbrains.kotlin.protobuf.ByteString - getPackageFqNameBytes() { - java.lang.Object ref = packageFqName_; + getModuleNameBytes() { + java.lang.Object ref = moduleName_; if (ref instanceof String) { org.jetbrains.kotlin.protobuf.ByteString b = org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - packageFqName_ = b; + moduleName_ = b; return b; } else { return (org.jetbrains.kotlin.protobuf.ByteString) ref; } } /** - * optional string package_fq_name = 3; + * required string module_name = 1; */ - public Builder setPackageFqName( + public Builder setModuleName( java.lang.String value) { if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000004; - packageFqName_ = value; + bitField0_ |= 0x00000001; + moduleName_ = value; return this; } /** - * optional string package_fq_name = 3; + * required string module_name = 1; */ - public Builder clearPackageFqName() { - bitField0_ = (bitField0_ & ~0x00000004); - packageFqName_ = getDefaultInstance().getPackageFqName(); + public Builder clearModuleName() { + bitField0_ = (bitField0_ & ~0x00000001); + moduleName_ = getDefaultInstance().getModuleName(); return this; } /** - * optional string package_fq_name = 3; + * required string module_name = 1; */ - public Builder setPackageFqNameBytes( + public Builder setModuleNameBytes( org.jetbrains.kotlin.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000004; - packageFqName_ = value; + bitField0_ |= 0x00000001; + moduleName_ = value; + + return this; + } + + private int flags_ ; + /** + * optional int32 flags = 2; + * + *
+       *0x1 = preRelease
+       * 
+ */ + public boolean hasFlags() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional int32 flags = 2; + * + *
+       *0x1 = preRelease
+       * 
+ */ + public int getFlags() { + return flags_; + } + /** + * optional int32 flags = 2; + * + *
+       *0x1 = preRelease
+       * 
+ */ + public Builder setFlags(int value) { + bitField0_ |= 0x00000002; + flags_ = value; + + return this; + } + /** + * optional int32 flags = 2; + * + *
+       *0x1 = preRelease
+       * 
+ */ + public Builder clearFlags() { + bitField0_ = (bitField0_ & ~0x00000002); + flags_ = 0; return this; } @@ -926,7 +1008,7 @@ public final class JsKlibMetadataProtoBuf { * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; */ public boolean hasStrings() { - return ((bitField0_ & 0x00000008) == 0x00000008); + return ((bitField0_ & 0x00000004) == 0x00000004); } /** * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; @@ -943,7 +1025,7 @@ public final class JsKlibMetadataProtoBuf { } strings_ = value; - bitField0_ |= 0x00000008; + bitField0_ |= 0x00000004; return this; } /** @@ -953,14 +1035,14 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder builderForValue) { strings_ = builderForValue.build(); - bitField0_ |= 0x00000008; + bitField0_ |= 0x00000004; return this; } /** * optional .org.jetbrains.kotlin.metadata.StringTable strings = 4; */ public Builder mergeStrings(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) { - if (((bitField0_ & 0x00000008) == 0x00000008) && + if (((bitField0_ & 0x00000004) == 0x00000004) && strings_ != org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance()) { strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.newBuilder(strings_).mergeFrom(value).buildPartial(); @@ -968,7 +1050,7 @@ public final class JsKlibMetadataProtoBuf { strings_ = value; } - bitField0_ |= 0x00000008; + bitField0_ |= 0x00000004; return this; } /** @@ -977,7 +1059,7 @@ public final class JsKlibMetadataProtoBuf { public Builder clearStrings() { strings_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000008); + bitField0_ = (bitField0_ & ~0x00000004); return this; } @@ -986,7 +1068,7 @@ public final class JsKlibMetadataProtoBuf { * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; */ public boolean hasQualifiedNames() { - return ((bitField0_ & 0x00000010) == 0x00000010); + return ((bitField0_ & 0x00000008) == 0x00000008); } /** * optional .org.jetbrains.kotlin.metadata.QualifiedNameTable qualified_names = 5; @@ -1003,7 +1085,7 @@ public final class JsKlibMetadataProtoBuf { } qualifiedNames_ = value; - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000008; return this; } /** @@ -1013,14 +1095,14 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder builderForValue) { qualifiedNames_ = builderForValue.build(); - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000008; 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) && + if (((bitField0_ & 0x00000008) == 0x00000008) && qualifiedNames_ != org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance()) { qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.newBuilder(qualifiedNames_).mergeFrom(value).buildPartial(); @@ -1028,7 +1110,7 @@ public final class JsKlibMetadataProtoBuf { qualifiedNames_ = value; } - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000008; return this; } /** @@ -1037,16 +1119,16 @@ public final class JsKlibMetadataProtoBuf { public Builder clearQualifiedNames() { qualifiedNames_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000010); + bitField0_ = (bitField0_ & ~0x00000008); return this; } private java.util.List annotation_ = java.util.Collections.emptyList(); private void ensureAnnotationIsMutable() { - if (!((bitField0_ & 0x00000020) == 0x00000020)) { + if (!((bitField0_ & 0x00000010) == 0x00000010)) { annotation_ = new java.util.ArrayList(annotation_); - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000010; } } @@ -1196,7 +1278,7 @@ public final class JsKlibMetadataProtoBuf { */ public Builder clearAnnotation() { annotation_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -1214,7 +1296,193 @@ public final class JsKlibMetadataProtoBuf { return this; } - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + private org.jetbrains.kotlin.protobuf.LazyStringList packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + private void ensurePackageFragmentNameIsMutable() { + if (!((bitField0_ & 0x00000020) == 0x00000020)) { + packageFragmentName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(packageFragmentName_); + bitField0_ |= 0x00000020; + } + } + /** + * repeated string package_fragment_name = 7; + */ + public org.jetbrains.kotlin.protobuf.ProtocolStringList + getPackageFragmentNameList() { + return packageFragmentName_.getUnmodifiableView(); + } + /** + * repeated string package_fragment_name = 7; + */ + public int getPackageFragmentNameCount() { + return packageFragmentName_.size(); + } + /** + * repeated string package_fragment_name = 7; + */ + public java.lang.String getPackageFragmentName(int index) { + return packageFragmentName_.get(index); + } + /** + * repeated string package_fragment_name = 7; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getPackageFragmentNameBytes(int index) { + return packageFragmentName_.getByteString(index); + } + /** + * repeated string package_fragment_name = 7; + */ + public Builder setPackageFragmentName( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackageFragmentNameIsMutable(); + packageFragmentName_.set(index, value); + + return this; + } + /** + * repeated string package_fragment_name = 7; + */ + public Builder addPackageFragmentName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackageFragmentNameIsMutable(); + packageFragmentName_.add(value); + + return this; + } + /** + * repeated string package_fragment_name = 7; + */ + public Builder addAllPackageFragmentName( + java.lang.Iterable values) { + ensurePackageFragmentNameIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, packageFragmentName_); + + return this; + } + /** + * repeated string package_fragment_name = 7; + */ + public Builder clearPackageFragmentName() { + packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000020); + + return this; + } + /** + * repeated string package_fragment_name = 7; + */ + public Builder addPackageFragmentNameBytes( + org.jetbrains.kotlin.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackageFragmentNameIsMutable(); + packageFragmentName_.add(value); + + return this; + } + + private org.jetbrains.kotlin.protobuf.LazyStringList emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + private void ensureEmptyPackageIsMutable() { + if (!((bitField0_ & 0x00000040) == 0x00000040)) { + emptyPackage_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(emptyPackage_); + bitField0_ |= 0x00000040; + } + } + /** + * repeated string empty_package = 8; + */ + public org.jetbrains.kotlin.protobuf.ProtocolStringList + getEmptyPackageList() { + return emptyPackage_.getUnmodifiableView(); + } + /** + * repeated string empty_package = 8; + */ + public int getEmptyPackageCount() { + return emptyPackage_.size(); + } + /** + * repeated string empty_package = 8; + */ + public java.lang.String getEmptyPackage(int index) { + return emptyPackage_.get(index); + } + /** + * repeated string empty_package = 8; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getEmptyPackageBytes(int index) { + return emptyPackage_.getByteString(index); + } + /** + * repeated string empty_package = 8; + */ + public Builder setEmptyPackage( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEmptyPackageIsMutable(); + emptyPackage_.set(index, value); + + return this; + } + /** + * repeated string empty_package = 8; + */ + public Builder addEmptyPackage( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEmptyPackageIsMutable(); + emptyPackage_.add(value); + + return this; + } + /** + * repeated string empty_package = 8; + */ + public Builder addAllEmptyPackage( + java.lang.Iterable values) { + ensureEmptyPackageIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, emptyPackage_); + + return this; + } + /** + * repeated string empty_package = 8; + */ + public Builder clearEmptyPackage() { + emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000040); + + return this; + } + /** + * repeated string empty_package = 8; + */ + public Builder addEmptyPackageBytes( + org.jetbrains.kotlin.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureEmptyPackageIsMutable(); + emptyPackage_.add(value); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.library.metadata.Header) } static { @@ -1222,11 +1490,11 @@ public final class JsKlibMetadataProtoBuf { defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header) + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.library.metadata.Header) } public interface FileOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.library.metadata.File) org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { /** @@ -1247,25 +1515,39 @@ public final class JsKlibMetadataProtoBuf { int getId(); /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * required string name = 2; + */ + boolean hasName(); + /** + * required string name = 2; + */ + java.lang.String getName(); + /** + * required string name = 2; + */ + org.jetbrains.kotlin.protobuf.ByteString + getNameBytes(); + + /** + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ java.util.List getAnnotationList(); /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index); /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ int getAnnotationCount(); } /** - * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File} + * Protobuf type {@code org.jetbrains.kotlin.library.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) + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.library.metadata.File) FileOrBuilder { // Use File.newBuilder() to construct. private File(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { @@ -1294,7 +1576,7 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.protobuf.ByteString.newOutput(); org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( - unknownFieldsOutput, 1); + unknownFieldsOutput); try { boolean done = false; while (!done) { @@ -1316,9 +1598,15 @@ public final class JsKlibMetadataProtoBuf { break; } case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); + bitField0_ |= 0x00000002; + name_ = bs; + break; + } + case 26: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { annotation_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; + mutable_bitField0_ |= 0x00000004; } annotation_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.PARSER, extensionRegistry)); break; @@ -1331,7 +1619,7 @@ public final class JsKlibMetadataProtoBuf { throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( e.getMessage()).setUnfinishedMessage(this); } finally { - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { annotation_ = java.util.Collections.unmodifiableList(annotation_); } try { @@ -1383,35 +1671,77 @@ public final class JsKlibMetadataProtoBuf { return id_; } - public static final int ANNOTATION_FIELD_NUMBER = 2; + public static final int NAME_FIELD_NUMBER = 2; + private java.lang.Object name_; + /** + * required string name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + 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()) { + name_ = s; + } + return s; + } + } + /** + * required string name = 2; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + org.jetbrains.kotlin.protobuf.ByteString b = + org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (org.jetbrains.kotlin.protobuf.ByteString) ref; + } + } + + public static final int ANNOTATION_FIELD_NUMBER = 3; private java.util.List annotation_; /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public java.util.List getAnnotationList() { return annotation_; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public java.util.List getAnnotationOrBuilderList() { return annotation_; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public int getAnnotationCount() { return annotation_.size(); } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) { return annotation_.get(index); } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public org.jetbrains.kotlin.metadata.ProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( int index) { @@ -1420,6 +1750,7 @@ public final class JsKlibMetadataProtoBuf { private void initFields() { id_ = 0; + name_ = ""; annotation_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; @@ -1428,6 +1759,10 @@ public final class JsKlibMetadataProtoBuf { if (isInitialized == 1) return true; if (isInitialized == 0) return false; + if (!hasName()) { + memoizedIsInitialized = 0; + return false; + } for (int i = 0; i < getAnnotationCount(); i++) { if (!getAnnotation(i).isInitialized()) { memoizedIsInitialized = 0; @@ -1444,8 +1779,11 @@ public final class JsKlibMetadataProtoBuf { if (((bitField0_ & 0x00000001) == 0x00000001)) { output.writeInt32(1, id_); } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getNameBytes()); + } for (int i = 0; i < annotation_.size(); i++) { - output.writeMessage(2, annotation_.get(i)); + output.writeMessage(3, annotation_.get(i)); } output.writeRawBytes(unknownFields); } @@ -1460,9 +1798,13 @@ public final class JsKlibMetadataProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeInt32Size(1, id_); } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeBytesSize(2, getNameBytes()); + } for (int i = 0; i < annotation_.size(); i++) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(2, annotation_.get(i)); + .computeMessageSize(3, annotation_.get(i)); } size += unknownFields.size(); memoizedSerializedSize = size; @@ -1476,53 +1818,53 @@ public final class JsKlibMetadataProtoBuf { return super.writeReplace(); } - public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File parseFrom( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File parseFrom( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -1531,21 +1873,21 @@ public final class JsKlibMetadataProtoBuf { 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) { + public static Builder newBuilder(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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} + * Protobuf type {@code org.jetbrains.kotlin.library.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> + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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() + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.library.metadata.File) + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.FileOrBuilder { + // Construct using org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -1560,8 +1902,10 @@ public final class JsKlibMetadataProtoBuf { super.clear(); id_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - annotation_ = java.util.Collections.emptyList(); + name_ = ""; bitField0_ = (bitField0_ & ~0x00000002); + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); return this; } @@ -1569,44 +1913,53 @@ public final class JsKlibMetadataProtoBuf { 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.library.metadata.KlibMetadataProtoBuf.File getDefaultInstanceForType() { + return org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File build() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File buildPartial() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File result = new org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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)) { + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.name_ = name_; + if (((bitField0_ & 0x00000004) == 0x00000004)) { annotation_ = java.util.Collections.unmodifiableList(annotation_); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); } 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; + public Builder mergeFrom(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File other) { + if (other == org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File.getDefaultInstance()) return this; if (other.hasId()) { setId(other.getId()); } + if (other.hasName()) { + bitField0_ |= 0x00000002; + name_ = other.name_; + + } if (!other.annotation_.isEmpty()) { if (annotation_.isEmpty()) { annotation_ = other.annotation_; - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); } else { ensureAnnotationIsMutable(); annotation_.addAll(other.annotation_); @@ -1619,6 +1972,10 @@ public final class JsKlibMetadataProtoBuf { } public final boolean isInitialized() { + if (!hasName()) { + + return false; + } for (int i = 0; i < getAnnotationCount(); i++) { if (!getAnnotation(i).isInitialized()) { @@ -1632,11 +1989,11 @@ public final class JsKlibMetadataProtoBuf { 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + parsedMessage = (org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File) e.getUnfinishedMessage(); throw e; } finally { if (parsedMessage != null) { @@ -1695,35 +2052,111 @@ public final class JsKlibMetadataProtoBuf { return this; } + private java.lang.Object name_ = ""; + /** + * required string name = 2; + */ + public boolean hasName() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required string name = 2; + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + 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()) { + name_ = s; + } + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string name = 2; + */ + public org.jetbrains.kotlin.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + org.jetbrains.kotlin.protobuf.ByteString b = + org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (org.jetbrains.kotlin.protobuf.ByteString) ref; + } + } + /** + * required string name = 2; + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + name_ = value; + + return this; + } + /** + * required string name = 2; + */ + public Builder clearName() { + bitField0_ = (bitField0_ & ~0x00000002); + name_ = getDefaultInstance().getName(); + + return this; + } + /** + * required string name = 2; + */ + public Builder setNameBytes( + org.jetbrains.kotlin.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + name_ = value; + + return this; + } + private java.util.List annotation_ = java.util.Collections.emptyList(); private void ensureAnnotationIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { annotation_ = new java.util.ArrayList(annotation_); - bitField0_ |= 0x00000002; + bitField0_ |= 0x00000004; } } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public java.util.List getAnnotationList() { return java.util.Collections.unmodifiableList(annotation_); } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public int getAnnotationCount() { return annotation_.size(); } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public org.jetbrains.kotlin.metadata.ProtoBuf.Annotation getAnnotation(int index) { return annotation_.get(index); } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder setAnnotation( int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { @@ -1736,7 +2169,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder setAnnotation( int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { @@ -1746,7 +2179,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder addAnnotation(org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { if (value == null) { @@ -1758,7 +2191,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder addAnnotation( int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation value) { @@ -1771,7 +2204,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder addAnnotation( org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { @@ -1781,7 +2214,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder addAnnotation( int index, org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Builder builderForValue) { @@ -1791,7 +2224,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder addAllAnnotation( java.lang.Iterable values) { @@ -1802,16 +2235,16 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder clearAnnotation() { annotation_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); + bitField0_ = (bitField0_ & ~0x00000004); return this; } /** - * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 2; + * repeated .org.jetbrains.kotlin.metadata.Annotation annotation = 3; */ public Builder removeAnnotation(int index) { ensureAnnotationIsMutable(); @@ -1820,7 +2253,7 @@ public final class JsKlibMetadataProtoBuf { return this; } - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.library.metadata.File) } static { @@ -1828,33 +2261,33 @@ public final class JsKlibMetadataProtoBuf { defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File) + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.library.metadata.File) } public interface FilesOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.library.metadata.Files) org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - java.util.List + java.util.List getFileList(); /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getFile(int index); + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File getFile(int index); /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ int getFileCount(); } /** - * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files} + * Protobuf type {@code org.jetbrains.kotlin.library.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) + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.library.metadata.Files) FilesOrBuilder { // Use Files.newBuilder() to construct. private Files(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { @@ -1883,7 +2316,7 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.protobuf.ByteString.newOutput(); org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( - unknownFieldsOutput, 1); + unknownFieldsOutput); try { boolean done = false; while (!done) { @@ -1901,10 +2334,10 @@ public final class JsKlibMetadataProtoBuf { } case 10: { if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { - file_ = new java.util.ArrayList(); + 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)); + file_.add(input.readMessage(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File.PARSER, extensionRegistry)); break; } } @@ -1944,36 +2377,36 @@ public final class JsKlibMetadataProtoBuf { } public static final int FILE_FIELD_NUMBER = 1; - private java.util.List file_; + private java.util.List file_; /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public java.util.List getFileList() { + public java.util.List getFileList() { return file_; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public java.util.List + public java.util.List getFileOrBuilderList() { return file_; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public int getFileCount() { return file_.size(); } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getFile(int index) { + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File getFile(int index) { return file_.get(index); } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.FileOrBuilder getFileOrBuilder( + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.FileOrBuilder getFileOrBuilder( int index) { return file_.get(index); } @@ -2028,53 +2461,53 @@ public final class JsKlibMetadataProtoBuf { return super.writeReplace(); } - public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files parseFrom( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files parseFrom( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2083,21 +2516,21 @@ public final class JsKlibMetadataProtoBuf { 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) { + public static Builder newBuilder(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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} + * Protobuf type {@code org.jetbrains.kotlin.library.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> + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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() + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.library.metadata.Files) + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.FilesOrBuilder { + // Construct using org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -2119,20 +2552,20 @@ public final class JsKlibMetadataProtoBuf { 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.library.metadata.KlibMetadataProtoBuf.Files getDefaultInstanceForType() { + return org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files build() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files buildPartial() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files result = new org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files(this); int from_bitField0_ = bitField0_; if (((bitField0_ & 0x00000001) == 0x00000001)) { file_ = java.util.Collections.unmodifiableList(file_); @@ -2142,8 +2575,8 @@ public final class JsKlibMetadataProtoBuf { 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; + public Builder mergeFrom(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files other) { + if (other == org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files.getDefaultInstance()) return this; if (!other.file_.isEmpty()) { if (file_.isEmpty()) { file_ = other.file_; @@ -2173,11 +2606,11 @@ public final class JsKlibMetadataProtoBuf { 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + parsedMessage = (org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files) e.getUnfinishedMessage(); throw e; } finally { if (parsedMessage != null) { @@ -2188,38 +2621,38 @@ public final class JsKlibMetadataProtoBuf { } private int bitField0_; - private java.util.List file_ = + private java.util.List file_ = java.util.Collections.emptyList(); private void ensureFileIsMutable() { if (!((bitField0_ & 0x00000001) == 0x00000001)) { - file_ = new java.util.ArrayList(file_); + file_ = new java.util.ArrayList(file_); bitField0_ |= 0x00000001; } } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public java.util.List getFileList() { + public java.util.List getFileList() { return java.util.Collections.unmodifiableList(file_); } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public int getFileCount() { return file_.size(); } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File getFile(int index) { + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File getFile(int index) { return file_.get(index); } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder setFile( - int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File value) { + int index, org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File value) { if (value == null) { throw new NullPointerException(); } @@ -2229,19 +2662,19 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder setFile( - int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.Builder builderForValue) { + int index, org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File.Builder builderForValue) { ensureFileIsMutable(); file_.set(index, builderForValue.build()); return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ - public Builder addFile(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File value) { + public Builder addFile(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File value) { if (value == null) { throw new NullPointerException(); } @@ -2251,10 +2684,10 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder addFile( - int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File value) { + int index, org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File value) { if (value == null) { throw new NullPointerException(); } @@ -2264,30 +2697,30 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder addFile( - org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.Builder builderForValue) { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File.Builder builderForValue) { ensureFileIsMutable(); file_.add(builderForValue.build()); return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder addFile( - int index, org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.File.Builder builderForValue) { + int index, org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.File.Builder builderForValue) { ensureFileIsMutable(); file_.add(index, builderForValue.build()); return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder addAllFile( - java.lang.Iterable values) { + java.lang.Iterable values) { ensureFileIsMutable(); org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( values, file_); @@ -2295,7 +2728,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder clearFile() { file_ = java.util.Collections.emptyList(); @@ -2304,7 +2737,7 @@ public final class JsKlibMetadataProtoBuf { return this; } /** - * repeated .org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.File file = 1; + * repeated .org.jetbrains.kotlin.library.metadata.File file = 1; */ public Builder removeFile(int index) { ensureFileIsMutable(); @@ -2313,7 +2746,7 @@ public final class JsKlibMetadataProtoBuf { return this; } - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.library.metadata.Files) } static { @@ -2321,11 +2754,11 @@ public final class JsKlibMetadataProtoBuf { defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Files) + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.library.metadata.Files) } public interface DescriptorUniqIdOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.library.metadata.DescriptorUniqId) org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { /** @@ -2338,11 +2771,11 @@ public final class JsKlibMetadataProtoBuf { long getIndex(); } /** - * Protobuf type {@code org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId} + * Protobuf type {@code org.jetbrains.kotlin.library.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) + // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.library.metadata.DescriptorUniqId) DescriptorUniqIdOrBuilder { // Use DescriptorUniqId.newBuilder() to construct. private DescriptorUniqId(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { @@ -2371,7 +2804,7 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.protobuf.ByteString.newOutput(); org.jetbrains.kotlin.protobuf.CodedOutputStream unknownFieldsCodedOutput = org.jetbrains.kotlin.protobuf.CodedOutputStream.newInstance( - unknownFieldsOutput, 1); + unknownFieldsOutput); try { boolean done = false; while (!done) { @@ -2489,53 +2922,53 @@ public final class JsKlibMetadataProtoBuf { return super.writeReplace(); } - public static org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId parseFrom( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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) + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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( + public static org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId parseFrom( org.jetbrains.kotlin.protobuf.CodedInputStream input, org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -2544,21 +2977,21 @@ public final class JsKlibMetadataProtoBuf { 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) { + public static Builder newBuilder(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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} + * Protobuf type {@code org.jetbrains.kotlin.library.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> + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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() + // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.library.metadata.DescriptorUniqId) + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqIdOrBuilder { + // Construct using org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -2580,20 +3013,20 @@ public final class JsKlibMetadataProtoBuf { 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.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId getDefaultInstanceForType() { + return org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId build() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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); + public org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId buildPartial() { + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId result = new org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -2604,8 +3037,8 @@ public final class JsKlibMetadataProtoBuf { 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; + public Builder mergeFrom(org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId other) { + if (other == org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance()) return this; if (other.hasIndex()) { setIndex(other.getIndex()); } @@ -2626,11 +3059,11 @@ public final class JsKlibMetadataProtoBuf { 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(); + parsedMessage = (org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId) e.getUnfinishedMessage(); throw e; } finally { if (parsedMessage != null) { @@ -2673,7 +3106,7 @@ public final class JsKlibMetadataProtoBuf { return this; } - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.library.metadata.DescriptorUniqId) } static { @@ -2681,1174 +3114,10 @@ public final class JsKlibMetadataProtoBuf { defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.DescriptorUniqId) + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.library.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; + public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 171; /** * extend .org.jetbrains.kotlin.metadata.Package { ... } */ @@ -3861,10 +3130,10 @@ public final class JsKlibMetadataProtoBuf { 0, null, null, - 131, + 171, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, java.lang.Integer.class); - public static final int CLASS_ANNOTATION_FIELD_NUMBER = 130; + public static final int CLASS_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.Class { ... } */ @@ -3876,43 +3145,43 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Class.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int CLASS_FILE_FIELD_NUMBER = 175; /** * 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 + java.lang.Integer> classFile = org.jetbrains.kotlin.protobuf.GeneratedMessageLite .newSingularGeneratedExtension( org.jetbrains.kotlin.metadata.ProtoBuf.Class.getDefaultInstance(), 0, null, null, - 135, + 175, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, java.lang.Integer.class); - public static final int CLASS_UNIQ_ID_FIELD_NUMBER = 136; + public static final int CLASS_UNIQ_ID_FIELD_NUMBER = 171; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, - 136, + 171, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int CONSTRUCTOR_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.Constructor { ... } */ @@ -3924,27 +3193,27 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int CONSTRUCTOR_UNIQ_ID_FIELD_NUMBER = 172; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, - 131, + 172, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int FUNCTION_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.Function { ... } */ @@ -3956,43 +3225,43 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int FUNCTION_FILE_FIELD_NUMBER = 172; /** * 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 + java.lang.Integer> functionFile = org.jetbrains.kotlin.protobuf.GeneratedMessageLite .newSingularGeneratedExtension( org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), 0, null, null, - 135, + 172, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, java.lang.Integer.class); - public static final int FUNCTION_UNIQ_ID_FIELD_NUMBER = 136; + public static final int FUNCTION_UNIQ_ID_FIELD_NUMBER = 173; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, - 136, + 173, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int PROPERTY_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.Property { ... } */ @@ -4004,11 +3273,11 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int PROPERTY_GETTER_ANNOTATION_FIELD_NUMBER = 177; /** * extend .org.jetbrains.kotlin.metadata.Property { ... } */ @@ -4020,11 +3289,11 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 132, + 177, 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; + public static final int PROPERTY_SETTER_ANNOTATION_FIELD_NUMBER = 178; /** * extend .org.jetbrains.kotlin.metadata.Property { ... } */ @@ -4036,11 +3305,11 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 133, + 178, 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; + public static final int COMPILE_TIME_VALUE_FIELD_NUMBER = 173; /** * extend .org.jetbrains.kotlin.metadata.Property { ... } */ @@ -4053,42 +3322,42 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(), null, - 131, + 173, 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; + public static final int PROPERTY_FILE_FIELD_NUMBER = 176; /** * 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 + java.lang.Integer> propertyFile = org.jetbrains.kotlin.protobuf.GeneratedMessageLite .newSingularGeneratedExtension( org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), 0, null, null, - 135, + 176, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, java.lang.Integer.class); - public static final int PROPERTY_UNIQ_ID_FIELD_NUMBER = 136; + public static final int PROPERTY_UNIQ_ID_FIELD_NUMBER = 179; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, - 136, + 179, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int ENUM_ENTRY_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.EnumEntry { ... } */ @@ -4100,27 +3369,43 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int ENUM_ENTRY_ORDINAL_FIELD_NUMBER = 171; /** * 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 + java.lang.Integer> enumEntryOrdinal = 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(), + 0, null, - 131, + null, + 171, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, + java.lang.Integer.class); + public static final int ENUM_ENTRY_UNIQ_ID_FIELD_NUMBER = 172; + /** + * extend .org.jetbrains.kotlin.metadata.EnumEntry { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry, + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId> enumEntryUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + null, + 172, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int PARAMETER_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.ValueParameter { ... } */ @@ -4132,27 +3417,27 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.ValueParameter.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int VALUE_PARAM_UNIQ_ID_FIELD_NUMBER = 171; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, - 131, + 171, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int TYPE_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.Type { ... } */ @@ -4164,11 +3449,11 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int TYPE_PARAMETER_ANNOTATION_FIELD_NUMBER = 170; /** * extend .org.jetbrains.kotlin.metadata.TypeParameter { ... } */ @@ -4180,42 +3465,94 @@ public final class JsKlibMetadataProtoBuf { org.jetbrains.kotlin.metadata.ProtoBuf.TypeParameter.getDefaultInstance(), org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.getDefaultInstance(), null, - 130, + 170, 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; + public static final int TYPE_PARAM_UNIQ_ID_FIELD_NUMBER = 171; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, - 131, + 171, 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; + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); + public static final int PACKAGE_FRAGMENT_FILES_FIELD_NUMBER = 170; /** * 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 + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files.getDefaultInstance(), null, - 130, + 170, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.class); + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.Files.class); + public static final int IS_EMPTY_FIELD_NUMBER = 172; + /** + * extend .org.jetbrains.kotlin.metadata.PackageFragment { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, + java.lang.Boolean> isEmpty = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.getDefaultInstance(), + false, + null, + null, + 172, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.BOOL, + java.lang.Boolean.class); + public static final int FQ_NAME_FIELD_NUMBER = 173; + /** + * extend .org.jetbrains.kotlin.metadata.PackageFragment { ... } + */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, + java.lang.String> fqName = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newSingularGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.getDefaultInstance(), + "", + null, + null, + 173, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.STRING, + java.lang.String.class); + public static final int CLASS_NAME_FIELD_NUMBER = 174; + /** + * extend .org.jetbrains.kotlin.metadata.PackageFragment { ... } + * + *
+   * id in StringTable
+   * 
+ */ + public static final + org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment, + java.util.List> className = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + .newRepeatedGeneratedExtension( + org.jetbrains.kotlin.metadata.ProtoBuf.PackageFragment.getDefaultInstance(), + null, + null, + 174, + org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, + true, + java.lang.Integer.class); public static final int TYPE_ALIAS_UNIQ_ID_FIELD_NUMBER = 131; /** * extend .org.jetbrains.kotlin.metadata.TypeAlias { ... } @@ -4227,18 +3564,18 @@ public final class JsKlibMetadataProtoBuf { public static final org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias, - org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> typeAliasUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId> typeAliasUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite .newSingularGeneratedExtension( org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.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(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(), null, 131, org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class); + org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf.DescriptorUniqId.class); static { } // @@protoc_insertion_point(outer_class_scope) -} \ No newline at end of file +} diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataSerializerProtocol.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataSerializerProtocol.kt new file mode 100644 index 00000000000..24a3cd49a61 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataSerializerProtocol.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.library.metadata + +import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite +import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol + +object KlibMetadataSerializerProtocol : SerializerExtensionProtocol( + ExtensionRegistryLite.newInstance().apply(KlibMetadataProtoBuf::registerAllExtensions), + KlibMetadataProtoBuf.packageFqName, + KlibMetadataProtoBuf.constructorAnnotation, + KlibMetadataProtoBuf.classAnnotation, + KlibMetadataProtoBuf.functionAnnotation, + KlibMetadataProtoBuf.propertyAnnotation, + KlibMetadataProtoBuf.propertyGetterAnnotation, + KlibMetadataProtoBuf.propertySetterAnnotation, + KlibMetadataProtoBuf.enumEntryAnnotation, + KlibMetadataProtoBuf.compileTimeValue, + KlibMetadataProtoBuf.parameterAnnotation, + KlibMetadataProtoBuf.typeAnnotation, + KlibMetadataProtoBuf.typeParameterAnnotation +) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataStringTable.kt similarity index 92% rename from compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataStringTable.kt index 6c61c8e9d33..af739eb19f1 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/lower/serialization/metadata/JsKlibMetadataStringTable.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibMetadataStringTable.kt @@ -3,7 +3,7 @@ * 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 +package org.jetbrains.kotlin.backend.common.serialization.metadata import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor @@ -14,7 +14,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers import org.jetbrains.kotlin.serialization.StringTableImpl -class JsKlibMetadataStringTable : StringTableImpl() { +class KlibMetadataStringTable : StringTableImpl() { override fun getLocalClassIdReplacement(descriptor: ClassifierDescriptorWithTypeParameters): ClassId? { return if (descriptor.containingDeclaration is CallableMemberDescriptor) { val superClassifiers = descriptor.getAllSuperClassifiers() diff --git a/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleDescriptorFactory.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleDescriptorFactory.kt similarity index 92% rename from konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleDescriptorFactory.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleDescriptorFactory.kt index 895c722f588..43f9db4d4b1 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleDescriptorFactory.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleDescriptorFactory.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.storage.StorageManager -interface KonanModuleDescriptorFactory { +interface KlibModuleDescriptorFactory { /** * Base method for creation of any Kotlin/Native [ModuleDescriptor]. @@ -20,7 +20,7 @@ interface KonanModuleDescriptorFactory { name: Name, storageManager: StorageManager, builtIns: KotlinBuiltIns, - origin: KonanModuleOrigin, + origin: KlibModuleOrigin, customCapabilities: Map, Any?> = emptyMap() ): ModuleDescriptorImpl @@ -31,7 +31,7 @@ interface KonanModuleDescriptorFactory { fun createDescriptorAndNewBuiltIns( name: Name, storageManager: StorageManager, - origin: KonanModuleOrigin, + origin: KlibModuleOrigin, customCapabilities: Map, Any?> = emptyMap() ): ModuleDescriptorImpl } diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleOrigin.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleOrigin.kt new file mode 100644 index 00000000000..5fc69ec421d --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibModuleOrigin.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.descriptors.konan + +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.isInterop + +sealed class KlibModuleOrigin { + + companion object { + val CAPABILITY = ModuleDescriptor.Capability("KlibModuleOrigin") + } +} + +sealed class CompiledKlibModuleOrigin: KlibModuleOrigin() + +class DeserializedKlibModuleOrigin(val library: KotlinLibrary) : CompiledKlibModuleOrigin() + +object CurrentKlibModuleOrigin: CompiledKlibModuleOrigin() + +object SyntheticModulesOrigin : KlibModuleOrigin() + +internal fun KlibModuleOrigin.isInteropLibrary(): Boolean = when (this) { + is DeserializedKlibModuleOrigin -> this.library.isInterop + CurrentKlibModuleOrigin, SyntheticModulesOrigin -> false +} + +val ModuleDescriptor.klibModuleOrigin get() = this.getCapability(KlibModuleOrigin.CAPABILITY)!! + +val ModuleDescriptor.kotlinLibrary get() = + (this.klibModuleOrigin as DeserializedKlibModuleOrigin) + .library diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibResolvedModuleDescriptorsFactory.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibResolvedModuleDescriptorsFactory.kt new file mode 100644 index 00000000000..56fec97a835 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/KlibResolvedModuleDescriptorsFactory.kt @@ -0,0 +1,50 @@ +package org.jetbrains.kotlin.serialization.konan + +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataModuleDescriptorFactory +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.storage.StorageManager + +interface KlibResolvedModuleDescriptorsFactory { + + val moduleDescriptorFactory: KlibMetadataModuleDescriptorFactory + + /** + * Given the [resolvedLibraries] creates the list of [ModuleDescriptorImpl]s with properly installed + * inter-dependencies. The result of this method is returned in a form of [KlibResolvedModuleDescriptors] instance. + * + * Please use this method with care: Unless this method accepts `null` for [builtIns], it is not recommended to + * invoke it this way. If you are compiling a source module, please supply the non-null [builtIns] from the + * source module, so that all modules created in your compilation session will share the same built-ins instance. + * + * Otherwise (if `null` was supplied), a new instance of [KotlinBuiltIns] will be created. The created built-ins + * instance will be shared by all modules created in this method. But this instance will have no connection + * with probably existing built-ins instance of your source module(s). + */ + fun createResolved( + resolvedLibraries: KotlinLibraryResolveResult, + storageManager: StorageManager, + builtIns: KotlinBuiltIns?, + languageVersionSettings: LanguageVersionSettings, + customAction: ((KotlinLibrary, ModuleDescriptorImpl) -> Unit)? = null + ): KotlinResolvedModuleDescriptors +} + +class KotlinResolvedModuleDescriptors( + + /** + * The list of modules each representing an individual Kotlin/Native library. All modules + * in this list have properly installed dependencies, i.e. module has all necessary dependencies + * on other modules plus a dependency on the [forwardDeclarationsModule]. + */ + val resolvedDescriptors: List, + + /** + * This is a module which "contains" forward declarations. + * Note: this module should be unique per compilation and should always be the last dependency of any module. + */ + val forwardDeclarationsModule: ModuleDescriptorImpl +) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/NullFlexibleTypeDeserializer.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/NullFlexibleTypeDeserializer.kt similarity index 100% rename from konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/NullFlexibleTypeDeserializer.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/NullFlexibleTypeDeserializer.kt diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/SourceFileMap.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/SourceFileMap.kt new file mode 100644 index 00000000000..aa427499a41 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/SourceFileMap.kt @@ -0,0 +1,54 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the LICENSE file. + */ +package org.jetbrains.kotlin.backend.common.serialization.metadata + +import org.jetbrains.kotlin.descriptors.SourceFile +import org.jetbrains.kotlin.library.KotlinLibrary + +private class DeserializedSourceFile( + val name_: String, val index: Int, val library: KotlinLibrary) : SourceFile { + override fun getName(): String? = name_ + + override fun equals(other: Any?): Boolean { + return other is DeserializedSourceFile && library == other.library && index == other.index + } + + override fun hashCode(): Int { + return library.hashCode() xor index + } +} + +class SourceFileMap { + private val sourceToIndex = mutableMapOf() + private val indexToSource = mutableMapOf() + + fun assign(file: SourceFile): Int { + return sourceToIndex.getOrPut(file) { + sourceToIndex.size + } + } + + fun provide(fileName: String, index: Int, library: KotlinLibrary) { + assert(indexToSource[index] == null) + indexToSource[index] = + DeserializedSourceFile(fileName, index, library) + } + + fun sourceFile(index: Int): SourceFile = + indexToSource[index] ?: throw Error("Unknown file for $index") + + fun filesAndClear() = + sourceToIndex.keys.sortedBy { + sourceToIndex[it] + }.also{ + clear() + } + + + fun clear() { + sourceToIndex.clear() + indexToSource.clear() + } +} \ No newline at end of file diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedPackageFragmentsFactoryImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt similarity index 55% rename from konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedPackageFragmentsFactoryImpl.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt index e407a87bec9..95515c19790 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedPackageFragmentsFactoryImpl.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataDeserializedPackageFragmentsFactoryImpl.kt @@ -1,32 +1,20 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.backend.common.serialization.metadata.impl -package org.jetbrains.kotlin.serialization.konan.impl - -import org.jetbrains.kotlin.builtins.functions.functionInterfacePackageFragmentProvider -import org.jetbrains.kotlin.contracts.ContractDeserializerImpl +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataDeserializedPackageFragmentsFactory import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl -import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupLocation -import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.konan.library.* -import org.jetbrains.kotlin.konan.library.resolver.PackageAccessedHandler +import org.jetbrains.kotlin.library.* +import org.jetbrains.kotlin.library.metadata.KlibMetadataPackageFragment +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl -import org.jetbrains.kotlin.serialization.deserialization.* -import org.jetbrains.kotlin.serialization.konan.KonanDeserializedPackageFragmentsFactory -import org.jetbrains.kotlin.serialization.konan.KonanPackageFragment -import org.jetbrains.kotlin.serialization.konan.KonanSerializerProtocol -import org.jetbrains.kotlin.serialization.konan.NullFlexibleTypeDeserializer +import org.jetbrains.kotlin.serialization.konan.impl.ForwardDeclarationsFqNames import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.getValue @@ -34,33 +22,34 @@ import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult // FIXME(ddol): decouple and move interop-specific logic back to Kotlin/Native. -internal object KonanDeserializedPackageFragmentsFactoryImpl : KonanDeserializedPackageFragmentsFactory { +open class KlibMetadataDeserializedPackageFragmentsFactoryImpl: KlibMetadataDeserializedPackageFragmentsFactory { override fun createDeserializedPackageFragments( - library: KonanLibrary, + library: KotlinLibrary, packageFragmentNames: List, moduleDescriptor: ModuleDescriptor, - packageAccessedHandler: PackageAccessedHandler?, + packageAccessedHandler: PackageAccessHandler?, storageManager: StorageManager ) = packageFragmentNames.flatMap { val fqName = FqName(it) - val parts = library.packageMetadataParts(it) + val parts = library.packageMetadataParts(fqName.asString()) parts.map { partName -> - KonanPackageFragment(fqName, library, packageAccessedHandler, storageManager, moduleDescriptor, partName) + KlibMetadataPackageFragment(fqName, library, packageAccessedHandler, storageManager, moduleDescriptor, partName) } } + override fun createSyntheticPackageFragments( - library: KonanLibrary, - deserializedPackageFragments: List, + library: KotlinLibrary, + deserializedPackageFragments: List, moduleDescriptor: ModuleDescriptor ): List { if (!library.isInterop) return emptyList() - val mainPackageFqName = library.packageFqName + val mainPackageFqName = library.packageFqName?. let{ FqName(it) } ?: error("Inconsistent manifest: interop library ${library.libraryName} should have `package` specified") - val exportForwardDeclarations = library.exportForwardDeclarations + val exportForwardDeclarations = library.exportForwardDeclarations.map{ FqName(it) } val aliasedPackageFragments = deserializedPackageFragments.filter { it.fqName == mainPackageFqName } @@ -78,87 +67,6 @@ internal object KonanDeserializedPackageFragmentsFactoryImpl : KonanDeserialized return result } - override fun createPackageFragmentProvider( - library: KonanLibrary, - packageAccessedHandler: PackageAccessedHandler?, - packageFragmentNames: List, - storageManager: StorageManager, - moduleDescriptor: ModuleDescriptor, - configuration: DeserializationConfiguration - ): PackageFragmentProvider { - - val deserializedPackageFragments = createDeserializedPackageFragments( - library, packageFragmentNames, moduleDescriptor, packageAccessedHandler, storageManager - ) - - val syntheticPackageFragments = createSyntheticPackageFragments( - library, deserializedPackageFragments, moduleDescriptor - ) - - val packageFragmentProvider = PackageFragmentProviderImpl(deserializedPackageFragments + syntheticPackageFragments) - - val notFoundClasses = NotFoundClasses(storageManager, moduleDescriptor) - - val annotationAndConstantLoader = AnnotationAndConstantLoaderImpl( - moduleDescriptor, - notFoundClasses, - KonanSerializerProtocol - ) - - val components = DeserializationComponents( - storageManager, - moduleDescriptor, - configuration, - DeserializedClassDataFinder(packageFragmentProvider), - annotationAndConstantLoader, - packageFragmentProvider, - LocalClassifierTypeSettings.Default, - ErrorReporter.DO_NOTHING, - LookupTracker.DO_NOTHING, - NullFlexibleTypeDeserializer, - emptyList(), - notFoundClasses, - ContractDeserializerImpl(configuration, storageManager), - extensionRegistryLite = KonanSerializerProtocol.extensionRegistry - ) - - for (packageFragment in deserializedPackageFragments) { - packageFragment.initialize(components) - } - - return if (library.uniqueName == KONAN_STDLIB_NAME) - CompositePackageFragmentProvider( - listOf( - packageFragmentProvider, - functionInterfacePackageFragmentProvider(storageManager, moduleDescriptor) - ) - ) - else - packageFragmentProvider - } - - override fun createForwardDeclarationHackPackagePartProvider( - storageManager: StorageManager, - module: ModuleDescriptorImpl - ): PackageFragmentProviderImpl { - fun createPackage(fqName: FqName, supertypeName: String, classKind: ClassKind) = - ForwardDeclarationsPackageFragmentDescriptor( - storageManager, - module, - fqName, - Name.identifier(supertypeName), - classKind - ) - - val packageFragmentProvider = PackageFragmentProviderImpl( - listOf( - createPackage(ForwardDeclarationsFqNames.cNamesStructs, "COpaque", ClassKind.CLASS), - createPackage(ForwardDeclarationsFqNames.objCNamesClasses, "ObjCObjectBase", ClassKind.CLASS), - createPackage(ForwardDeclarationsFqNames.objCNamesProtocols, "ObjCObject", ClassKind.INTERFACE) - ) - ) - return packageFragmentProvider - } } /** @@ -201,7 +109,7 @@ class ExportedForwardDeclarationsPackageFragmentDescriptor( * The package fragment that redirects all requests for classifier lookup to its targets. */ class ClassifierAliasingPackageFragmentDescriptor( - targets: List, + targets: List, module: ModuleDescriptor, fqName: FqName ) : PackageFragmentDescriptorImpl(module, fqName) { @@ -278,4 +186,5 @@ private class ForwardDeclarationsPackageFragmentDescriptor( } override fun getMemberScope(): MemberScope = memberScope -} \ No newline at end of file +} + diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataModuleDescriptorFactoryImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataModuleDescriptorFactoryImpl.kt new file mode 100644 index 00000000000..5982ee1080e --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibMetadataModuleDescriptorFactoryImpl.kt @@ -0,0 +1,155 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.serialization.konan.impl + +import org.jetbrains.kotlin.backend.common.serialization.metadata.* +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.builtins.functions.functionInterfacePackageFragmentProvider +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.contracts.ContractDeserializerImpl +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin +import org.jetbrains.kotlin.descriptors.konan.KlibModuleDescriptorFactory +import org.jetbrains.kotlin.descriptors.konan.klibModuleOrigin +import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler +import org.jetbrains.kotlin.library.metadata.parseModuleHeader +import org.jetbrains.kotlin.library.unresolvedDependencies +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration +import org.jetbrains.kotlin.serialization.deserialization.* +import org.jetbrains.kotlin.storage.StorageManager + +val ModuleDescriptorImpl.isStdlibModule + get() = (this.klibModuleOrigin as? DeserializedKlibModuleOrigin) + ?.library?.unresolvedDependencies?.isEmpty() ?: false + +class KlibMetadataModuleDescriptorFactoryImpl( + override val descriptorFactory: KlibModuleDescriptorFactory, + override val packageFragmentsFactory: KlibMetadataDeserializedPackageFragmentsFactory, + override val flexibleTypeDeserializer: FlexibleTypeDeserializer +): KlibMetadataModuleDescriptorFactory { + + override fun createDescriptorOptionalBuiltIns( + library: KotlinLibrary, + languageVersionSettings: LanguageVersionSettings, + storageManager: StorageManager, + builtIns: KotlinBuiltIns?, + packageAccessHandler: PackageAccessHandler? + ): ModuleDescriptorImpl { + + val libraryProto = parseModuleHeader(library.moduleHeaderData) + + val moduleName = Name.special(libraryProto.moduleName) + val moduleOrigin = DeserializedKlibModuleOrigin(library) + + val moduleDescriptor = if (builtIns != null ) + descriptorFactory.createDescriptor(moduleName, storageManager, builtIns, moduleOrigin) + else + descriptorFactory.createDescriptorAndNewBuiltIns(moduleName, storageManager, moduleOrigin) + + val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) + + val compositePackageFragmentAddend = + if (moduleDescriptor.isStdlibModule) { + functionInterfacePackageFragmentProvider(storageManager, moduleDescriptor) + } else null + + val provider = createPackageFragmentProvider( + library, + packageAccessHandler, + libraryProto.packageFragmentNameList, + storageManager, + moduleDescriptor, + deserializationConfiguration, + compositePackageFragmentAddend + ) + + moduleDescriptor.initialize(provider) + + return moduleDescriptor + } + + override fun createPackageFragmentProvider( + library: KotlinLibrary, + packageAccessHandler: PackageAccessHandler?, + packageFragmentNames: List, + storageManager: StorageManager, + moduleDescriptor: ModuleDescriptor, + configuration: DeserializationConfiguration, + compositePackageFragmentAddend: PackageFragmentProvider? + ): PackageFragmentProvider { + + val deserializedPackageFragments = packageFragmentsFactory.createDeserializedPackageFragments( + library, packageFragmentNames, moduleDescriptor, packageAccessHandler, storageManager) + + // TODO: this is native specific. Move to a child class. + val syntheticPackageFragments = packageFragmentsFactory.createSyntheticPackageFragments( + library, deserializedPackageFragments, moduleDescriptor) + + val provider = PackageFragmentProviderImpl(deserializedPackageFragments + syntheticPackageFragments) + + val notFoundClasses = NotFoundClasses(storageManager, moduleDescriptor) + + val annotationAndConstantLoader = AnnotationAndConstantLoaderImpl( + moduleDescriptor, + notFoundClasses, + KlibMetadataSerializerProtocol + ) + + val components = DeserializationComponents( + storageManager, + moduleDescriptor, + configuration, + DeserializedClassDataFinder(provider), + annotationAndConstantLoader, + provider, + LocalClassifierTypeSettings.Default, + ErrorReporter.DO_NOTHING, + LookupTracker.DO_NOTHING, + flexibleTypeDeserializer, + emptyList(), + notFoundClasses, + ContractDeserializerImpl(configuration, storageManager), + extensionRegistryLite = KlibMetadataSerializerProtocol.extensionRegistry) + + for (packageFragment in deserializedPackageFragments) { + packageFragment.initialize(components) + } + + return compositePackageFragmentAddend ?.let { + CompositePackageFragmentProvider(listOf(it, provider)) + } ?: provider + } + + fun createForwardDeclarationHackPackagePartProvider( + storageManager: StorageManager, + module: ModuleDescriptorImpl + ): PackageFragmentProviderImpl { + fun createPackage(fqName: FqName, supertypeName: String, classKind: ClassKind) = + ForwardDeclarationsPackageFragmentDescriptor( + storageManager, + module, + fqName, + Name.identifier(supertypeName), + classKind + ) + + val packageFragmentProvider = PackageFragmentProviderImpl( + listOf( + createPackage(ForwardDeclarationsFqNames.cNamesStructs, "COpaque", ClassKind.CLASS), + createPackage(ForwardDeclarationsFqNames.objCNamesClasses, "ObjCObjectBase", ClassKind.CLASS), + createPackage(ForwardDeclarationsFqNames.objCNamesProtocols, "ObjCObject", ClassKind.INTERFACE) + ) + ) + return packageFragmentProvider + } +} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibModuleDescriptorFactoryImpl.kt similarity index 76% rename from konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt rename to compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibModuleDescriptorFactoryImpl.kt index ace0de3be32..19f1d734dde 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/impl/KonanModuleDescriptorFactoryImpl.kt +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibModuleDescriptorFactoryImpl.kt @@ -6,30 +6,28 @@ package org.jetbrains.kotlin.descriptors.konan.impl import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.descriptors.konan.KonanModuleDescriptorFactory -import org.jetbrains.kotlin.descriptors.konan.KonanModuleOrigin +import org.jetbrains.kotlin.descriptors.konan.* import org.jetbrains.kotlin.descriptors.konan.isInteropLibrary import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion import org.jetbrains.kotlin.storage.StorageManager -internal object KonanModuleDescriptorFactoryImpl : KonanModuleDescriptorFactory { +internal class KlibModuleDescriptorFactoryImpl(val createBuiltIns: (StorageManager) -> KotlinBuiltIns) : KlibModuleDescriptorFactory { override fun createDescriptor( name: Name, storageManager: StorageManager, builtIns: KotlinBuiltIns, - origin: KonanModuleOrigin, + origin: KlibModuleOrigin, customCapabilities: Map, Any?> ) = ModuleDescriptorImpl( name, storageManager, builtIns, capabilities = customCapabilities + mapOf( - KonanModuleOrigin.CAPABILITY to origin, + KlibModuleOrigin.CAPABILITY to origin, ImplicitIntegerCoercion.MODULE_CAPABILITY to origin.isInteropLibrary() ) ) @@ -37,11 +35,11 @@ internal object KonanModuleDescriptorFactoryImpl : KonanModuleDescriptorFactory override fun createDescriptorAndNewBuiltIns( name: Name, storageManager: StorageManager, - origin: KonanModuleOrigin, + origin: KlibModuleOrigin, customCapabilities: Map, Any?> ): ModuleDescriptorImpl { - val builtIns = KonanBuiltIns(storageManager) + val builtIns = createBuiltIns(storageManager) val moduleDescriptor = createDescriptor(name, storageManager, builtIns, origin, customCapabilities) builtIns.builtInsModule = moduleDescriptor diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibResolvedModuleDescriptorsFactoryImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibResolvedModuleDescriptorsFactoryImpl.kt new file mode 100644 index 00000000000..24de3af2abf --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/impl/KlibResolvedModuleDescriptorsFactoryImpl.kt @@ -0,0 +1,183 @@ +package org.jetbrains.kotlin.serialization.konan.impl + +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult +import org.jetbrains.kotlin.backend.common.serialization.metadata.KlibMetadataModuleDescriptorFactory +import org.jetbrains.kotlin.builtins.KotlinBuiltIns +import org.jetbrains.kotlin.config.LanguageVersionSettings +import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl +import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin +import org.jetbrains.kotlin.descriptors.konan.SyntheticModulesOrigin +import org.jetbrains.kotlin.incremental.components.LookupLocation +import org.jetbrains.kotlin.incremental.components.NoLookupLocation +import org.jetbrains.kotlin.util.profile +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns +import org.jetbrains.kotlin.resolve.scopes.MemberScope +import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl +import org.jetbrains.kotlin.serialization.konan.KlibResolvedModuleDescriptorsFactory +import org.jetbrains.kotlin.serialization.konan.KotlinResolvedModuleDescriptors +import org.jetbrains.kotlin.storage.LockBasedStorageManager +import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.storage.getValue +import org.jetbrains.kotlin.utils.Printer + +// TODO: eliminate Native specifics. +class KlibResolvedModuleDescriptorsFactoryImpl( + override val moduleDescriptorFactory: KlibMetadataModuleDescriptorFactory +): KlibResolvedModuleDescriptorsFactory { + + override fun createResolved( + resolvedLibraries: KotlinLibraryResolveResult, + storageManager: StorageManager, + builtIns: KotlinBuiltIns?, + languageVersionSettings: LanguageVersionSettings, + customAction: ((KotlinLibrary, ModuleDescriptorImpl) -> Unit)? + ): KotlinResolvedModuleDescriptors { + + val moduleDescriptors = mutableListOf() + @Suppress("NAME_SHADOWING") + var builtIns = builtIns + + // Build module descriptors. + resolvedLibraries.forEach { library, packageAccessHandler -> + profile("Loading ${library.libraryName}") { + + // MutableModuleContext needs ModuleDescriptorImpl, rather than ModuleDescriptor. + val moduleDescriptor = createDescriptorOptionalBuiltsIns( + library, languageVersionSettings, storageManager, builtIns, packageAccessHandler + ) + builtIns = moduleDescriptor.builtIns + moduleDescriptors.add(moduleDescriptor) + + customAction?.invoke(library, moduleDescriptor) + } + } + + val forwardDeclarationsModule = createForwardDeclarationsModule(builtIns, storageManager) + + // Set inter-dependencies between module descriptors, add forwarding declarations module. + for (module in moduleDescriptors) { + // Yes, just to all of them. + module.setDependencies(moduleDescriptors + forwardDeclarationsModule) + } + + return KotlinResolvedModuleDescriptors(moduleDescriptors, forwardDeclarationsModule) + } + + private fun createForwardDeclarationsModule( + builtIns: KotlinBuiltIns?, + storageManager: StorageManager): ModuleDescriptorImpl { + + val name = Name.special("") + val module = createDescriptorOptionalBuiltsIns(name, storageManager, builtIns, SyntheticModulesOrigin) + + fun createPackage(fqName: FqName, supertypeName: String, classKind: ClassKind) = + ForwardDeclarationsPackageFragmentDescriptor( + storageManager, + module, + fqName, + Name.identifier(supertypeName), + classKind) + + val packageFragmentProvider = PackageFragmentProviderImpl( + listOf( + createPackage(ForwardDeclarationsFqNames.cNamesStructs, "COpaque", ClassKind.CLASS), + createPackage(ForwardDeclarationsFqNames.objCNamesClasses, "ObjCObjectBase", ClassKind.CLASS), + createPackage(ForwardDeclarationsFqNames.objCNamesProtocols, "ObjCObject", ClassKind.INTERFACE) + ) + ) + + module.initialize(packageFragmentProvider) + module.setDependencies(module) + + return module + } + + private fun createDescriptorOptionalBuiltsIns( + name: Name, + storageManager: StorageManager, + builtIns: KotlinBuiltIns?, + moduleOrigin: KlibModuleOrigin + ) = if (builtIns != null) + moduleDescriptorFactory.descriptorFactory.createDescriptor(name, storageManager, builtIns, moduleOrigin) + else + moduleDescriptorFactory.descriptorFactory.createDescriptorAndNewBuiltIns(name, storageManager, moduleOrigin) + + private fun createDescriptorOptionalBuiltsIns( + library: KotlinLibrary, + languageVersionSettings: LanguageVersionSettings, + storageManager: StorageManager, + builtIns: KotlinBuiltIns?, + packageAccessHandler: PackageAccessHandler? + ) = if (builtIns != null) + moduleDescriptorFactory.createDescriptor(library, languageVersionSettings, storageManager, builtIns, packageAccessHandler) + else + moduleDescriptorFactory.createDescriptorAndNewBuiltIns(library, languageVersionSettings, storageManager, packageAccessHandler) +} + +/** + * Package fragment which creates descriptors for forward declarations on demand. + */ +class ForwardDeclarationsPackageFragmentDescriptor( + storageManager: StorageManager, + module: ModuleDescriptor, + fqName: FqName, + supertypeName: Name, + classKind: ClassKind +) : PackageFragmentDescriptorImpl(module, fqName) { + + private val memberScope = object : MemberScopeImpl() { + + private val declarations = storageManager.createMemoizedFunction(this::createDeclaration) + + private val supertype by storageManager.createLazyValue { + val descriptor = builtIns.builtInsModule.getPackage(ForwardDeclarationsFqNames.packageName) + .memberScope + .getContributedClassifier(supertypeName, NoLookupLocation.FROM_BACKEND) as ClassDescriptor + + descriptor.defaultType + } + + private fun createDeclaration(name: Name): ClassDescriptor { + return ClassDescriptorImpl( + this@ForwardDeclarationsPackageFragmentDescriptor, + name, + Modality.FINAL, + classKind, + listOf(supertype), + SourceElement.NO_SOURCE, + false, + LockBasedStorageManager.NO_LOCKS + ).apply { + this.initialize(MemberScope.Empty, emptySet(), null) + } + } + + override fun getContributedClassifier(name: Name, location: LookupLocation) = declarations(name) + + override fun printScopeStructure(p: Printer) { + p.println(this::class.java.simpleName, "{}") + } + } + + override fun getMemberScope(): MemberScope = memberScope +} + +// FIXME(ddol): decouple and move interop-specific logic back to Kotlin/Native. +internal object ForwardDeclarationsFqNames { + + val packageName = FqName("kotlinx.cinterop") + + val cNames = FqName("cnames") + val cNamesStructs = cNames.child(Name.identifier("structs")) + + val objCNames = FqName("objcnames") + val objCNamesClasses = objCNames.child(Name.identifier("classes")) + val objCNamesProtocols = objCNames.child(Name.identifier("protocols")) +} diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinLibraryResolver.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinLibraryResolver.kt new file mode 100644 index 00000000000..64d2d89399b --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinLibraryResolver.kt @@ -0,0 +1,56 @@ +package org.jetbrains.kotlin.library.resolver + +import org.jetbrains.kotlin.library.* +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler + +interface KotlinLibraryResolver { + + val searchPathResolver: SearchPathResolver + + /** + * Given the list of Kotlin/Native library names, ABI version and other parameters + * resolves libraries and evaluates dependencies between them. + */ + fun resolveWithDependencies( + unresolvedLibraries: List, + noStdLib: Boolean = false, + noDefaultLibs: Boolean = false, + noEndorsedLibs: Boolean = false + ): KotlinLibraryResolveResult +} + +interface KotlinLibraryResolveResult { + + fun filterRoots(predicate: (KotlinResolvedLibrary) -> Boolean): KotlinLibraryResolveResult + + fun getFullList(order: LibraryOrder? = null): List + + fun forEach(action: (KotlinLibrary, PackageAccessHandler) -> Unit) +} + + +typealias LibraryOrder = (Iterable) -> List + +val TopologicalLibraryOrder: LibraryOrder = { input -> + val sorted = mutableListOf() + val visited = mutableSetOf() + val tempMarks = mutableSetOf() + + fun visit(node: KotlinResolvedLibrary, result: MutableList) { + if (visited.contains(node)) return + if (tempMarks.contains(node)) error("Cyclic dependency in library graph for: ${node.library.libraryName}") + tempMarks.add(node) + node.resolvedDependencies.forEach { + visit(it, result) + } + visited.add(node) + result += node + } + + input.forEach next@{ + if (visited.contains(it)) return@next + visit(it, sorted) + } + + sorted +} \ No newline at end of file diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinResolvedLibrary.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinResolvedLibrary.kt new file mode 100644 index 00000000000..8a6dad0bac0 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/KotlinResolvedLibrary.kt @@ -0,0 +1,23 @@ +package org.jetbrains.kotlin.library.resolver + +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler + +/** + * A [KotlinLibrary] wrapper that is used for resolving library's dependencies. + */ +interface KotlinResolvedLibrary: PackageAccessHandler { + + // The library itself. + val library: KotlinLibrary + + // Dependencies on other libraries. + val resolvedDependencies: List + + // Any package fragment within this library has beed visited during frontend resolve phase. + // You need to utilize PackageAccessHandler to make it work for you. + val isNeededForLink: Boolean + + // Is provided by the distribution? + val isDefault: Boolean +} diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinLibraryResolverImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinLibraryResolverImpl.kt new file mode 100644 index 00000000000..e7d98a1d90c --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinLibraryResolverImpl.kt @@ -0,0 +1,156 @@ +/* + * Copyright 2010-2019 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.library.resolver.impl + +import org.jetbrains.kotlin.konan.file.File +import org.jetbrains.kotlin.library.* +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult +import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolver +import org.jetbrains.kotlin.library.resolver.KotlinResolvedLibrary +import org.jetbrains.kotlin.library.resolver.LibraryOrder +import org.jetbrains.kotlin.util.WithLogger + +fun SearchPathResolver.libraryResolver() + = KotlinLibraryResolverImpl(this) + +class KotlinLibraryResolverImpl( + override val searchPathResolver: SearchPathResolver +): KotlinLibraryResolver, WithLogger by searchPathResolver { + + override fun resolveWithDependencies( + unresolvedLibraries: List, + noStdLib: Boolean, + noDefaultLibs: Boolean, + noEndorsedLibs: Boolean + ) = findLibraries(unresolvedLibraries, noStdLib, noDefaultLibs, noEndorsedLibs) + .leaveDistinct() + .resolveDependencies() + + /** + * Returns the list of libraries based on [libraryNames], [noStdLib], [noDefaultLibs] and [noEndorsedLibs] criteria. + * + * This method does not return any libraries that might be available via transitive dependencies + * from the original library set (root set). + */ + private fun findLibraries( + unresolvedLibraries: List, + noStdLib: Boolean, + noDefaultLibs: Boolean, + noEndorsedLibs: Boolean + ): List { + + val userProvidedLibraries = unresolvedLibraries.asSequence() + .map { searchPathResolver.resolve(it) } + .toList() + + val defaultLibraries = searchPathResolver.defaultLinks(noStdLib, noDefaultLibs, noEndorsedLibs) + + // Make sure the user provided ones appear first, so that + // they have precedence over defaults when duplicates are eliminated. + return userProvidedLibraries + defaultLibraries + } + + /** + * Leaves only distinct libraries (by absolute path), warns on duplicated paths. + */ + private fun List.leaveDistinct() = + this.groupBy { it.libraryFile.absolutePath }.let { groupedByAbsolutePath -> + warnOnLibraryDuplicates(groupedByAbsolutePath.filter { it.value.size > 1 }.keys) + groupedByAbsolutePath.map { it.value.first() } + } + + private fun warnOnLibraryDuplicates(duplicatedPaths: Iterable) { + duplicatedPaths.forEach { logger.warning("library included more than once: $it") } + } + + + /** + * Given the list of root libraries does the following: + * + * 1. Evaluates other libraries that are available via transitive dependencies. + * 2. Wraps each [KotlinLibrary] into a [KotlinResolvedLibrary] with information about dependencies on other libraries. + * 3. Creates resulting [KotlinLibraryResolveResult] object. + */ + private fun List.resolveDependencies(): KotlinLibraryResolveResult { + + val rootLibraries = this.map { KotlinResolvedLibraryImpl(it) } + + // As far as the list of root libraries is known from the very beginning, the result can be + // constructed from the very beginning as well. + val result = KotlinLibraryResolverResultImpl(rootLibraries) + + val cache = mutableMapOf() + cache.putAll(rootLibraries.map { it.library.libraryFile.absoluteFile to it }) + + var newDependencies = rootLibraries + do { + newDependencies = newDependencies.map { library: KotlinResolvedLibraryImpl -> + library.library.unresolvedDependencies.asSequence() + + .map { KotlinResolvedLibraryImpl(searchPathResolver.resolve(it)) } + .map { resolved -> + val absoluteFile = resolved.library.libraryFile.absoluteFile + if (absoluteFile in cache) { + library.addDependency(cache[absoluteFile]!!) + null + } else { + cache.put(absoluteFile, resolved) + library.addDependency(resolved) + resolved + } + + }.filterNotNull() + .toList() + }.flatten() + } while (newDependencies.isNotEmpty()) + + return result + } +} + +class KotlinLibraryResolverResultImpl( + private val roots: List +): KotlinLibraryResolveResult { + + private val all: List by lazy { + val result = mutableSetOf().also { it.addAll(roots) } + + var newDependencies = result.toList() + do { + newDependencies = newDependencies + .map { it -> it.resolvedDependencies }.flatten() + .filter { it !in result } + result.addAll(newDependencies) + } while (newDependencies.isNotEmpty()) + + result.toList() + } + + override fun filterRoots(predicate: (KotlinResolvedLibrary) -> Boolean) = + KotlinLibraryResolverResultImpl(roots.filter(predicate)) + + override fun getFullList(order: LibraryOrder?) = (order?.invoke(all) ?: all).asPlain() + + override fun forEach(action: (KotlinLibrary, PackageAccessHandler) -> Unit) { + all.forEach { action(it.library, it) } + } + + private fun List.asPlain() = map { it.library } + + override fun toString() = "roots=$roots, all=$all" +} diff --git a/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinResolvedLibraryImpl.kt b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinResolvedLibraryImpl.kt new file mode 100644 index 00000000000..0e9c7a2d534 --- /dev/null +++ b/compiler/util-klib-metadata/src/org/jetbrains/kotlin/library/metadata/resolver/impl/KotlinResolvedLibraryImpl.kt @@ -0,0 +1,38 @@ +package org.jetbrains.kotlin.library.resolver.impl + +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.metadata.parseModuleHeader +import org.jetbrains.kotlin.library.metadata.parsePackageFragment +import org.jetbrains.kotlin.library.resolver.KotlinResolvedLibrary +import org.jetbrains.kotlin.metadata.ProtoBuf + +class KotlinResolvedLibraryImpl(override val library: KotlinLibrary): KotlinResolvedLibrary { + + private val _resolvedDependencies = mutableListOf() + private val _emptyPackages by lazy { parseModuleHeader(library.moduleHeaderData).emptyPackageList } + + override val resolvedDependencies: List + get() = _resolvedDependencies + + internal fun addDependency(resolvedLibrary: KotlinResolvedLibrary) = _resolvedDependencies.add(resolvedLibrary) + + override var isNeededForLink: Boolean = false + private set + + override val isDefault: Boolean + get() = library.isDefault + + override fun loadPackageFragment( + library: KotlinLibrary, + packageFqName: String, + partName: String + ): ProtoBuf.PackageFragment { + if (!isNeededForLink // fast path + && !_emptyPackages.contains(packageFqName)) { + isNeededForLink = true + } + return parsePackageFragment(library.packageMetadata(packageFqName, partName)) + } + + override fun toString() = "library=$library, dependsOn=${_resolvedDependencies.joinToString { it.library.toString() }}" +} diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt index eaa37cfe14e..7dc38aad3e8 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibrary.kt @@ -11,6 +11,9 @@ const val KLIB_PROPERTY_LIBRARY_VERSION = "library_version" const val KLIB_PROPERTY_UNIQUE_NAME = "unique_name" const val KLIB_PROPERTY_DEPENDS = "depends" const val KLIB_PROPERTY_PACKAGE = "package" +const val KLIB_PROPERTY_INTEROP = "interop" +const val KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS = "exportForwardDeclarations" + /** * Abstractions for getting access to the information stored inside of Kotlin/Native library. */ @@ -51,3 +54,17 @@ val BaseKotlinLibrary.unresolvedDependencies: List } interface KotlinLibrary : BaseKotlinLibrary, MetadataLibrary, IrLibrary + +// TODO: should we move the below ones to Native? +val KotlinLibrary.isInterop + get() = manifestProperties.getProperty(KLIB_PROPERTY_INTEROP) == "true" + +val KotlinLibrary.packageFqName: String? + get() = manifestProperties.getProperty(org.jetbrains.kotlin.library.KLIB_PROPERTY_PACKAGE) + +val KotlinLibrary.exportForwardDeclarations + get() = manifestProperties.propertyList(KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS, escapeInQuotes = true) + .asSequence() + .map { it.trim() } + .filter { it.isNotEmpty() } + .toList() \ No newline at end of file diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt index 3202b529756..4c47394b9d4 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/KotlinLibraryUtils.kt @@ -36,4 +36,4 @@ val List.toUnresolvedLibraries .let { if (it.isEmpty()) null else it } val name = it.substringBeforeLast('@') UnresolvedLibrary(name, version) - } + } \ No newline at end of file diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt new file mode 100644 index 00000000000..c3d0005e1a4 --- /dev/null +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/SearchPathResolver.kt @@ -0,0 +1,160 @@ +package org.jetbrains.kotlin.library + +import org.jetbrains.kotlin.konan.KonanVersion +import org.jetbrains.kotlin.konan.file.File +import org.jetbrains.kotlin.library.impl.createKotlinLibrary +import org.jetbrains.kotlin.util.* + +const val KOTLIN_STDLIB_NAME = "stdlib" + +interface SearchPathResolver : WithLogger { + val searchRoots: List + fun resolutionSequence(givenPath: String): Sequence + fun resolve(unresolved: UnresolvedLibrary, isDefaultLink: Boolean = false): L + fun resolve(givenPath: String): L + fun defaultLinks(noStdLib: Boolean, noDefaultLibs: Boolean, noEndorsedLibs: Boolean): List +} + +interface SearchPathResolverWithAttributes: SearchPathResolver { + val knownAbiVersions: List? + val knownCompilerVersions: List? +} + +fun resolverByName( + repositories: List, + directLibs: List = emptyList(), + distributionKlib: String? = null, + localKotlinDir: String? = null, + skipCurrentDir: Boolean = false, + logger: Logger = DummyLogger +): SearchPathResolver = KotlinLibrarySearchPathResolver(repositories, directLibs, distributionKlib, localKotlinDir, skipCurrentDir, logger) + +open class KotlinLibrarySearchPathResolver( + repositories: List, + directLibs: List, + val distributionKlib: String?, + val localKotlinDir: String?, + val skipCurrentDir: Boolean, + override val logger: Logger = DummyLogger +) : SearchPathResolver { + + val localHead: File? + get() = localKotlinDir?.File()?.klib + + val distHead: File? + get() = distributionKlib?.File()?.child("common") + + open val distPlatformHead: File? = null + + val currentDirHead: File? + get() = if (!skipCurrentDir) File.userDir else null + + private val repoRoots: List by lazy { repositories.map { File(it) } } + + private val directLibraries: List by lazy { + directLibs.mapNotNull { found(File(it)) }.map { createKotlinLibrary(it) } + } + + // This is the place where we specify the order of library search. + override val searchRoots: List by lazy { + (listOf(currentDirHead) + repoRoots + listOf(localHead, distHead, distPlatformHead)).filterNotNull() + } + + private fun found(candidate: File): File? { + fun check(file: File): Boolean = + file.exists && (file.isFile || File(file, "manifest").exists) + + val noSuffix = File(candidate.path.removeSuffixIfPresent(KLIB_FILE_EXTENSION_WITH_DOT)) + val withSuffix = File(candidate.path.suffixIfNot(KLIB_FILE_EXTENSION_WITH_DOT)) + return when { + check(withSuffix) -> withSuffix + check(noSuffix) -> noSuffix + else -> null + } + } + + override fun resolutionSequence(givenPath: String): Sequence { + val given = File(givenPath) + val sequence = if (given.isAbsolute) { + sequenceOf(found(given)) + } else { + // Search among user-provided libraries by unique name. + // It's a workaround for maven publication. When a library is published without Gradle metadata, + // it has a complex file name (e.g. foo-macos_x64-1.0.klib). But a dependency on this lib in manifests + // of other libs uses its unique name written in the manifest (i.e just 'foo'). So we cannot resolve this + // library by its filename. But we have this library's file (we've downloaded it using maven dependency + // resolution) so we can pass it to the compiler directly. This code takes this into account and looks for + // a library dependencies also in libs passed to the compiler as files (passed to the resolver as the + // 'directLibraries' property). + val directLibs = directLibraries.asSequence().filter { + it.uniqueName == givenPath + }.map { + it.libraryFile + } + // Search among libraries in repositoreis by library filename. + val repoLibs = searchRoots.asSequence().map { + found(File(it, givenPath)) + } + directLibs + repoLibs + } + return sequence.filterNotNull() + } + + override fun resolve(unresolved: UnresolvedLibrary, isDefaultLink: Boolean): L { + val givenPath = unresolved.path + return resolutionSequence(givenPath).firstOrNull() ?. let { + createKotlinLibrary(it, isDefaultLink) as L + } ?: run { + logger.fatal("Could not find \"$givenPath\" in ${searchRoots.map { it.absolutePath }}.") + } + } + + override fun resolve(givenPath: String) = resolve(UnresolvedLibrary(givenPath, null), false) + + + private val File.klib + get() = File(this, "klib") + + // The libraries from the default root are linked automatically. + val defaultRoots: List + get() = listOfNotNull(distHead, distPlatformHead).filter { it.exists } + + private fun getDefaultLibrariesFromDir(directory: File) = + if (directory.exists) { + directory.listFiles + .asSequence() + .filterNot { it.name.startsWith('.') } + .filterNot { it.name.removeSuffixIfPresent(KLIB_FILE_EXTENSION_WITH_DOT) == KOTLIN_STDLIB_NAME } + .map { UnresolvedLibrary(it.absolutePath, null) } + .map { resolve(it, isDefaultLink = true) } + } else emptySequence() + + override fun defaultLinks(noStdLib: Boolean, noDefaultLibs: Boolean, noEndorsedLibs: Boolean): List { + + val result = mutableListOf() + + if (!noStdLib) { + result.add(resolve(UnresolvedLibrary(KOTLIN_STDLIB_NAME, null), true)) + } + + // Endorsed libraries in distHead. + if (!noEndorsedLibs) { + distHead?.let { + result.addAll(getDefaultLibrariesFromDir(it)) + } + } + // Platform libraries resolve. + if (!noDefaultLibs) { + distPlatformHead?.let { + result.addAll(getDefaultLibrariesFromDir(it)) + } + } + + return result + } +} + +fun KonanVersion.compatible(other: KonanVersion) = + this.major == other.major + && this.minor == other.minor + && this.maintenance == other.maintenance diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt index 52723694bf9..00abe1a594d 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.konan.properties.Properties import org.jetbrains.kotlin.konan.properties.loadProperties open class BaseKotlinLibraryImpl( - private val access: BaseLibraryAccess, + val access: BaseLibraryAccess, override val isDefault: Boolean ) : BaseKotlinLibrary { override val libraryFile get() = access.klib @@ -40,7 +40,7 @@ open class BaseKotlinLibraryImpl( } open class MetadataLibraryImpl( - private val access: MetadataLibraryAccess + val access: MetadataLibraryAccess ) : MetadataLibrary { override val moduleHeaderData: ByteArray by lazy { @@ -72,7 +72,7 @@ open class MetadataLibraryImpl( } abstract class IrLibraryImpl( - protected val access: IrLibraryAccess + val access: IrLibraryAccess ) : IrLibrary { override val dataFlowGraph by lazy { access.inPlace { it: IrKotlinLibraryLayout -> @@ -211,9 +211,9 @@ class IrPerFileLibraryImpl(_access: IrLibraryAccess) : Ir } open class KotlinLibraryImpl( - base: BaseKotlinLibraryImpl, - metadata: MetadataLibraryImpl, - ir: IrLibraryImpl + val base: BaseKotlinLibraryImpl, + val metadata: MetadataLibraryImpl, + val ir: IrLibraryImpl ) : KotlinLibrary, BaseKotlinLibrary by base, MetadataLibrary by metadata, diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt index d9243062307..dd8b7eaa97f 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryLayoutImpl.kt @@ -4,7 +4,7 @@ import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.file.file import org.jetbrains.kotlin.konan.file.withZipFileSystem import org.jetbrains.kotlin.library.* -import org.jetbrains.kotlin.konan.util.removeSuffixIfPresent +import org.jetbrains.kotlin.util.removeSuffixIfPresent import java.nio.file.FileSystem open class KotlinLibraryLayoutImpl(val klib: File) : KotlinLibraryLayout { diff --git a/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt b/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt index 2b84a6400c7..831a14cdf6b 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt @@ -55,15 +55,10 @@ val PROTO_PATHS: List = listOf( ProtoPath("core/metadata/src/builtins.proto"), ProtoPath("js/js.serializer/src/js.proto"), ProtoPath("js/js.serializer/src/js-ast.proto", false), - 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"), - - // TODO drop this scheme, 'compiler/ir/serialization.js/src/js.proto' is the actual one - ProtoPath("compiler/ir/backend.js/src/js.proto", false), - - ProtoPath("compiler/ir/serialization.js/src/js.proto", false), + ProtoPath("compiler/util-klib-metadata/src/KlibMetadataProtoBuf.proto", false), ProtoPath("compiler/ir/serialization.common/src/KotlinIr.proto", false) ) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt index 23f7dad71c6..a5dc3832402 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPGradleProjectResolver.kt @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.gradle.* import org.jetbrains.kotlin.idea.configuration.GradlePropertiesFileFacade.Companion.KOTLIN_NOT_IMPORTED_COMMON_SOURCE_SETS_SETTING import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling -import org.jetbrains.kotlin.konan.util.removeSuffixIfPresent +import org.jetbrains.kotlin.util.removeSuffixIfPresent import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.plugins.gradle.model.* import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt index 46519efbd9c..01255d5e96e 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativePluginUtil.kt @@ -14,28 +14,18 @@ import com.intellij.psi.SingleRootFileViewProvider import com.intellij.psi.impl.PsiFileFactoryImpl import com.intellij.psi.stubs.PsiFileStub import com.intellij.testFramework.LightVirtualFile -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.ide.konan.decompiler.KotlinNativeLoadingMetadataCache import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.caches.project.LibraryInfo import org.jetbrains.kotlin.idea.decompiler.textBuilder.LoggingErrorReporter -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.util.KonanFactories.DefaultPackageFragmentsFactory -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.KonanLibraryLayout -import org.jetbrains.kotlin.konan.library.KonanLibrarySource.KonanLibraryDir -import org.jetbrains.kotlin.konan.library.KonanLibrarySource.KonanLibraryFile -import org.jetbrains.kotlin.konan.library.MetadataReader -import org.jetbrains.kotlin.konan.library.createKonanLibrary -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.impl.BaseKotlinLibraryImpl +import org.jetbrains.kotlin.library.impl.MetadataLibraryImpl +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf +import org.jetbrains.kotlin.library.metadata.PackageAccessHandler +import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes -import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration -import org.jetbrains.kotlin.storage.StorageManager - -const val KOTLIN_NATIVE_CURRENT_ABI_VERSION = 1 +import org.jetbrains.kotlin.konan.file.File as KFile fun createFileStub(project: Project, text: String): PsiFileStub<*> { val virtualFile = LightVirtualFile("dummy.kt", KotlinFileType.INSTANCE, text) @@ -49,62 +39,48 @@ fun createFileStub(project: Project, text: String): PsiFileStub<*> { fun createLoggingErrorReporter(log: Logger) = LoggingErrorReporter(log) -fun KonanLibrary.createPackageFragmentProvider( - storageManager: StorageManager, - languageVersionSettings: LanguageVersionSettings, - moduleDescriptor: ModuleDescriptor -): PackageFragmentProvider { - - val library = this - - val libraryProto = library.moduleHeaderData - - //TODO: Is it required somehow? - //val moduleName = Name.special(libraryProto.moduleName) - //val moduleOrigin = DeserializedKonanModuleOrigin(library) - - val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) - - return DefaultPackageFragmentsFactory.createPackageFragmentProvider( - library, - null, - libraryProto.packageFragmentNameList, - storageManager, - moduleDescriptor, - deserializationConfiguration - ) -} - -internal object CachingIdeMetadataReaderImpl : MetadataReader { - - override fun loadSerializedModule(libraryLayout: KonanLibraryLayout): KonanProtoBuf.LinkDataLibrary = - cache.getCachedModuleHeader(libraryLayout.getVirtualFile(libraryLayout.moduleHeaderFile)) - - override fun loadSerializedPackageFragment( - libraryLayout: KonanLibraryLayout, - packageFqName: String, - partName: String - ): KonanProtoBuf.LinkDataPackageFragment = - cache.getCachedPackageFragment(libraryLayout.getVirtualFile(libraryLayout.packageFragmentFile(packageFqName, partName))) - - private fun KonanLibraryLayout.getVirtualFile(file: File): VirtualFile { - val source = this.source - return when (source) { - is KonanLibraryFile -> asJarFileSystemFile(source.klibFile, file) - is KonanLibraryDir -> asLocalFile(file) - } +internal object CachingIdeKonanLibraryMetadataLoader : PackageAccessHandler { + override fun loadModuleHeader( + library: KotlinLibrary + ): KlibMetadataProtoBuf.Header { + val virtualFile = getVirtualFile(library, library.moduleHeaderFile) + return cache.getCachedModuleHeader(virtualFile) } - private fun asJarFileSystemFile(jarFile: File, localFile: File): VirtualFile { + override fun loadPackageFragment( + library: KotlinLibrary, + packageFqName: String, + partName: String + ): ProtoBuf.PackageFragment { + val virtualFile = getVirtualFile(library, library.packageFragmentFile(packageFqName, partName)) + return cache.getCachedPackageFragment(virtualFile) + } + + private fun getVirtualFile(library: KotlinLibrary, file: KFile): VirtualFile = + if (library.isZipped) asJarFileSystemFile(library.libraryFile, file) else asLocalFile(file) + + private fun asJarFileSystemFile(jarFile: KFile, localFile: KFile): VirtualFile { val fullPath = jarFile.absolutePath + "!" + localFile.absolutePath return StandardFileSystems.jar().findFileByPath(fullPath) ?: error("File not found: $fullPath") } - private fun asLocalFile(localFile: File): VirtualFile { + private fun asLocalFile(localFile: KFile): VirtualFile { val fullPath = localFile.absolutePath return StandardFileSystems.local().findFileByPath(fullPath) ?: error("File not found: $fullPath") } private val cache get() = KotlinNativeLoadingMetadataCache.getInstance() + + + private val KotlinLibrary.moduleHeaderFile get() = + (this as MetadataLibraryImpl).access.layout.moduleHeaderFile + + private fun KotlinLibrary.packageFragmentFile(packageFqName: String, partName: String) = + (this as MetadataLibraryImpl).access.layout.packageFragmentFile(packageFqName, partName) + + private val KotlinLibrary.isZipped get() = + (this as BaseKotlinLibraryImpl).access.layout.isZipped + } + diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt index 753f1d6bc18..679c8141a8f 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt @@ -24,7 +24,8 @@ import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider -import org.jetbrains.kotlin.descriptors.konan.DeserializedKonanModuleOrigin +import org.jetbrains.kotlin.descriptors.konan.DeserializedKlibModuleOrigin +import org.jetbrains.kotlin.descriptors.konan.KlibModuleOrigin import org.jetbrains.kotlin.ide.konan.analyzer.NativeResolverForModuleFactory import org.jetbrains.kotlin.idea.caches.project.LibraryInfo import org.jetbrains.kotlin.idea.caches.project.lazyClosure @@ -32,15 +33,47 @@ import org.jetbrains.kotlin.idea.caches.resolve.BuiltInsCacheKey import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.library.* -import org.jetbrains.kotlin.konan.util.KonanFactories +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.impl.createKotlinLibrary +import org.jetbrains.kotlin.library.isInterop +import org.jetbrains.kotlin.library.metadata.parseModuleHeader import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind import org.jetbrains.kotlin.platform.konan.KonanPlatforms import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion import org.jetbrains.kotlin.resolve.TargetEnvironment +import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration +import org.jetbrains.kotlin.serialization.konan.impl.KlibMetadataModuleDescriptorFactoryImpl import org.jetbrains.kotlin.storage.StorageManager +fun KotlinLibrary.createPackageFragmentProvider( + storageManager: StorageManager, + languageVersionSettings: LanguageVersionSettings, + moduleDescriptor: ModuleDescriptor + ): PackageFragmentProvider { + + val library = this + + val libraryProto = parseModuleHeader(library.moduleHeaderData) + + //TODO: Is it required somehow? + //val moduleName = Name.special(libraryProto.moduleName) + //val moduleOrigin = DeserializedKonanModuleOrigin(library) + + val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) + + return KonanFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( + library, + null, + libraryProto.packageFragmentNameList, + storageManager, + moduleDescriptor, + deserializationConfiguration, + null + ) +} + class NativePlatformKindResolution : IdePlatformKindResolution { override fun createLibraryInfo(project: Project, library: Library): List { @@ -116,32 +149,34 @@ private fun createKotlinNativeBuiltIns(moduleInfo: ModuleInfo, projectContext: P val builtInsModule = KonanFactories.DefaultDescriptorFactory.createDescriptorAndNewBuiltIns( KotlinBuiltIns.BUILTINS_MODULE_NAME, storageManager, - DeserializedKonanModuleOrigin(konanLibrary), + DeserializedKlibModuleOrigin(konanLibrary), stdlibInfo.capabilities ) val languageSettings = IDELanguageSettingsProvider.getLanguageVersionSettings(stdlibInfo, project, isReleaseCoroutines = false) val deserializationConfiguration = CompilerDeserializationConfiguration(languageSettings) - val libraryProto = konanLibrary.moduleHeaderData + val libraryProto = parseModuleHeader(konanLibrary.moduleHeaderData) - val stdlibFragmentProvider = KonanFactories.DefaultPackageFragmentsFactory.createPackageFragmentProvider( + val stdlibFragmentProvider = KonanFactories.DefaultDeserializedDescriptorFactory.createPackageFragmentProvider( konanLibrary, - null, + CachingIdeKonanLibraryMetadataLoader, libraryProto.packageFragmentNameList, storageManager, builtInsModule, - deserializationConfiguration + deserializationConfiguration, + null ) builtInsModule.initialize( CompositePackageFragmentProvider( listOf( stdlibFragmentProvider, - KonanFactories.DefaultPackageFragmentsFactory.createForwardDeclarationHackPackagePartProvider( - storageManager, - builtInsModule - ) + (KonanFactories.DefaultDeserializedDescriptorFactory as KlibMetadataModuleDescriptorFactoryImpl) + .createForwardDeclarationHackPackagePartProvider( + storageManager, + builtInsModule + ) ) ) ) @@ -158,11 +193,7 @@ private fun ModuleInfo.findNativeStdlib(project: Project): NativeLibraryInfo? = class NativeLibraryInfo(project: Project, library: Library, root: File) : LibraryInfo(project, library) { - private val nativeLibrary = createKonanLibrary( - root, - KOTLIN_NATIVE_CURRENT_ABI_VERSION, - metadataReader = CachingIdeMetadataReaderImpl - ) + private val nativeLibrary = createKotlinLibrary(root) private val roots = listOf(root.absolutePath) @@ -173,8 +204,8 @@ class NativeLibraryInfo(project: Project, library: Library, root: File) : Librar override val capabilities: Map, Any?> get() = super.capabilities + mapOf( - ImplicitIntegerCoercion.MODULE_CAPABILITY to nativeLibrary.isInterop, - NATIVE_LIBRARY_CAPABILITY to nativeLibrary + KlibModuleOrigin.CAPABILITY to this, + ImplicitIntegerCoercion.MODULE_CAPABILITY to nativeLibrary.isInterop ) override val platform: TargetPlatform @@ -183,6 +214,6 @@ class NativeLibraryInfo(project: Project, library: Library, root: File) : Librar override fun toString() = "Native" + super.toString() companion object { - val NATIVE_LIBRARY_CAPABILITY = ModuleDescriptor.Capability("KonanLibrary") + val NATIVE_LIBRARY_CAPABILITY = ModuleDescriptor.Capability("KotlinLibrary") } } diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt index 5421031314c..3451e5fb084 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeLoadingMetadataCache.kt @@ -11,9 +11,10 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.containers.ContainerUtil.createConcurrentWeakValueMap import org.jetbrains.kotlin.konan.library.KLIB_METADATA_FILE_EXTENSION import org.jetbrains.kotlin.konan.library.KLIB_MODULE_METADATA_FILE_NAME -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf -import org.jetbrains.kotlin.serialization.konan.parseModuleHeader -import org.jetbrains.kotlin.serialization.konan.parsePackageFragment +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf +import org.jetbrains.kotlin.library.metadata.parseModuleHeader +import org.jetbrains.kotlin.library.metadata.parsePackageFragment +import org.jetbrains.kotlin.metadata.ProtoBuf class KotlinNativeLoadingMetadataCache : BaseComponent { @@ -32,15 +33,15 @@ class KotlinNativeLoadingMetadataCache : BaseComponent { constructor(virtualFile: VirtualFile) : this(virtualFile.url, virtualFile.modificationStamp) } - private val packageFragmentCache = createConcurrentWeakValueMap() - private val moduleHeaderCache = createConcurrentWeakValueMap() + private val packageFragmentCache = createConcurrentWeakValueMap() + private val moduleHeaderCache = createConcurrentWeakValueMap() - fun getCachedPackageFragment(virtualFile: VirtualFile): KonanProtoBuf.LinkDataPackageFragment = + fun getCachedPackageFragment(virtualFile: VirtualFile): ProtoBuf.PackageFragment = packageFragmentCache.computeIfAbsent(CacheKey(virtualFile.ensurePackageMetadataFile)) { virtualFile.createPackageFragmentCacheEntry } - fun getCachedModuleHeader(virtualFile: VirtualFile): KonanProtoBuf.LinkDataLibrary = + fun getCachedModuleHeader(virtualFile: VirtualFile): KlibMetadataProtoBuf.Header = moduleHeaderCache.computeIfAbsent(CacheKey(virtualFile.ensureModuleHeaderFile)) { virtualFile.createModuleHeaderCacheEntry } diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDecompiler.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDecompiler.kt index 4ad8f09f4ad..628f07c53ac 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDecompiler.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDecompiler.kt @@ -10,12 +10,12 @@ import com.intellij.openapi.fileTypes.FileTypeConsumer import com.intellij.openapi.fileTypes.FileTypeFactory import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.konan.library.KLIB_METADATA_FILE_EXTENSION +import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion -import org.jetbrains.kotlin.serialization.konan.KonanSerializerProtocol import org.jetbrains.kotlin.serialization.konan.NullFlexibleTypeDeserializer class KotlinNativeMetadataDecompiler : KotlinNativeMetadataDecompilerBase( - KotlinNativeMetaFileType, { KonanSerializerProtocol }, NullFlexibleTypeDeserializer, + KotlinNativeMetaFileType, { KlibMetadataSerializerProtocol }, NullFlexibleTypeDeserializer, { KotlinNativeMetadataVersion.DEFAULT_INSTANCE }, { KotlinNativeMetadataVersion.INVALID_VERSION }, KotlinNativeMetaFileType.STUB_VERSION @@ -23,7 +23,7 @@ class KotlinNativeMetadataDecompiler : KotlinNativeMetadataDecompilerBase = - proto.classes.classesList.filter { proto -> + proto.class_List.filter { proto -> val classId = nameResolver.getClassId(proto.fqName) !classId.isNestedClass && classId !in ClassDeserializer.BLACK_LIST } diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDeserializerForDecompiler.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDeserializerForDecompiler.kt index e6d02c9d0aa..c50c44b49c0 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDeserializerForDecompiler.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeMetadataDeserializerForDecompiler.kt @@ -15,8 +15,8 @@ import org.jetbrains.kotlin.ide.konan.createLoggingErrorReporter import org.jetbrains.kotlin.idea.decompiler.textBuilder.DeserializerForDecompilerBase import org.jetbrains.kotlin.idea.decompiler.textBuilder.ResolveEverythingToKotlinAnyLocalClassifierResolver import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.NameResolver -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol import org.jetbrains.kotlin.serialization.deserialization.* @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ class KotlinNativeMetadataDeserializerForDecompiler( packageFqName: FqName, - private val proto: KonanProtoBuf.LinkDataPackageFragment, + private val proto: ProtoBuf.PackageFragment, private val nameResolver: NameResolver, serializerProtocol: SerializerExtensionProtocol, flexibleTypeDeserializer: FlexibleTypeDeserializer diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeProtoBasedClassDataFinder.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeProtoBasedClassDataFinder.kt index 3dd879c40e9..29fac415178 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeProtoBasedClassDataFinder.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/decompiler/KotlinNativeProtoBasedClassDataFinder.kt @@ -6,20 +6,20 @@ package org.jetbrains.kotlin.ide.konan.decompiler import org.jetbrains.kotlin.descriptors.SourceElement +import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.NameResolver -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.serialization.deserialization.ClassData import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder import org.jetbrains.kotlin.serialization.deserialization.getClassId class KotlinNativeProtoBasedClassDataFinder( - proto: KonanProtoBuf.LinkDataPackageFragment, + proto: ProtoBuf.PackageFragment, private val nameResolver: NameResolver, private val classSource: (ClassId) -> SourceElement = { SourceElement.NO_SOURCE } ) : ClassDataFinder { private val classIdToProto = - proto.classes.classesList.associateBy { klass -> + proto.class_List.associateBy { klass -> nameResolver.getClassId(klass.fqName) } diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/index/KotlinNativeMetaFileIndex.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/index/KotlinNativeMetaFileIndex.kt index b316393cc57..7b467e438c3 100644 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/index/KotlinNativeMetaFileIndex.kt +++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/index/KotlinNativeMetaFileIndex.kt @@ -9,6 +9,7 @@ import com.intellij.util.indexing.FileBasedIndex import org.jetbrains.kotlin.ide.konan.decompiler.KotlinNativeLoadingMetadataCache import org.jetbrains.kotlin.ide.konan.decompiler.KotlinNativeMetaFileType import org.jetbrains.kotlin.idea.vfilefinder.KotlinFileIndexBase +import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf import org.jetbrains.kotlin.name.FqName object KotlinNativeMetaFileIndex : KotlinFileIndexBase(KotlinNativeMetaFileIndex::class.java) { @@ -27,6 +28,6 @@ object KotlinNativeMetaFileIndex : KotlinFileIndexBase val fragment = KotlinNativeLoadingMetadataCache.getInstance().getCachedPackageFragment(fileContent.file) - FqName(fragment.fqName) + FqName(fragment.getExtension(KlibMetadataProtoBuf.fqName)) } } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt index dc5e0f77e5b..e37d17faae3 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.js.test import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap -import org.jetbrains.kotlin.ir.backend.js.loadKlib import org.jetbrains.kotlin.ir.backend.js.compile import org.jetbrains.kotlin.ir.backend.js.generateKLib import org.jetbrains.kotlin.ir.backend.js.jsPhases @@ -15,15 +14,20 @@ import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.facade.MainCallParameters import org.jetbrains.kotlin.js.facade.TranslationUnit +import org.jetbrains.kotlin.library.KotlinLibrary +import org.jetbrains.kotlin.library.KotlinLibrarySearchPathResolver +import org.jetbrains.kotlin.library.UnresolvedLibrary +import org.jetbrains.kotlin.library.resolver.impl.libraryResolver +import org.jetbrains.kotlin.library.toUnresolvedLibraries import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull import java.io.File import java.lang.Boolean.getBoolean -private val fullRuntimeKlib = loadKlib("compiler/ir/serialization.js/build/fullRuntime/klib") -private val defaultRuntimeKlib = loadKlib("compiler/ir/serialization.js/build/reducedRuntime/klib") -private val kotlinTestKLib = loadKlib("compiler/ir/serialization.js/build/kotlin.test/klib") +private val fullRuntimeKlib = "compiler/ir/serialization.js/build/fullRuntime/klib" +private val defaultRuntimeKlib = "compiler/ir/serialization.js/build/reducedRuntime/klib" +private val kotlinTestKLib = "compiler/ir/serialization.js/build/kotlin.test/klib" abstract class BasicIrBoxTest( pathToTestDir: String, @@ -80,9 +84,27 @@ abstract class BasicIrBoxTest( val transitiveLibraries = config.configuration[JSConfigurationKeys.TRANSITIVE_LIBRARIES]!!.map { File(it).name } - val allDependencies = runtimeKlibs + transitiveLibraries.map { - loadKlib(compilationCache[it] ?: error("Can't find compiled module for dependency $it")) - } + val allKlibPaths = (runtimeKlibs + transitiveLibraries.map { + compilationCache[it] ?: error("Can't find compiled module for dependency $it") + }).map { File(it).absolutePath } + val unresolvedLibraries = allKlibPaths.toUnresolvedLibraries + + // Configure the resolver to only work with absolute paths for now. + val libraryResolver = KotlinLibrarySearchPathResolver( + repositories = emptyList(), + directLibs = allKlibPaths, + distributionKlib = null, + localKotlinDir = null, + skipCurrentDir = true + // TODO: pass logger attached to message collector here. + ).libraryResolver() + val resolvedLibraries = + libraryResolver.resolveWithDependencies( + unresolvedLibraries = unresolvedLibraries, + noStdLib = true, + noDefaultLibs = true, + noEndorsedLibs = true + ) val actualOutputFile = outputFile.absolutePath.let { if (!isMainModule) it.replace("_v5.js", "/") else it @@ -111,7 +133,7 @@ abstract class BasicIrBoxTest( files = filesToCompile, configuration = config.configuration, phaseConfig = phaseConfig, - allDependencies = allDependencies, + allDependencies = resolvedLibraries, friendDependencies = emptyList(), mainArguments = mainCallParameters.run { if (shouldBeGenerated()) arguments() else null }, exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, testFunction))) @@ -130,7 +152,7 @@ abstract class BasicIrBoxTest( project = config.project, files = filesToCompile, configuration = config.configuration, - allDependencies = allDependencies, + allDependencies = resolvedLibraries, friendDependencies = emptyList(), outputKlibPath = actualOutputFile, nopack = true diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt index 88cdc687e0f..bd4f5167680 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt @@ -21,6 +21,8 @@ import org.jetbrains.kotlin.ir.backend.js.loadKlib import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.facade.TranslationUnit import org.jetbrains.kotlin.js.test.engines.SpiderMonkeyEngine +import org.jetbrains.kotlin.library.resolver.impl.KotlinLibraryResolverResultImpl +import org.jetbrains.kotlin.library.resolver.impl.KotlinResolvedLibraryImpl import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtNamedFunction @@ -111,7 +113,8 @@ abstract class BasicWasmBoxTest( files = filesToCompile, configuration = config.configuration, phaseConfig = phaseConfig, - allDependencies = listOf(wasmRuntimeKlib), + // TODO: Bypass the resolver fow wasm. + allDependencies = KotlinLibraryResolverResultImpl(listOf(KotlinResolvedLibraryImpl(wasmRuntimeKlib))), friendDependencies = emptyList(), exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, testFunction))) ) diff --git a/konan/library-reader/build.gradle.kts b/konan/library-reader/build.gradle.kts index adc211fe894..bd6caa6dd61 100644 --- a/konan/library-reader/build.gradle.kts +++ b/konan/library-reader/build.gradle.kts @@ -25,6 +25,9 @@ dependencies { mavenCompileScope(project(":kotlin-compiler")) compile(project(":kotlin-native:kotlin-native-utils")) + compile(project(":kotlin-util-io")) + compile(project(":kotlin-util-klib")) + compile(project(":kotlin-util-klib-metadata")) testCompile(commonDep("junit:junit")) } diff --git a/konan/library-reader/src/konan.proto b/konan/library-reader/src/konan.proto deleted file mode 100644 index 537b3ee9d6a..00000000000 --- a/konan/library-reader/src/konan.proto +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -syntax = "proto2"; - -package org.jetbrains.kotlin.metadata.konan; - -import "core/metadata/src/metadata.proto"; - -option java_outer_classname = "KonanProtoBuf"; -option optimize_for = LITE_RUNTIME; - -// Konan extensions to the "descriptors" protobuf. - -extend Package { - optional int32 package_fq_name = 171; -} - -extend Class { - repeated Annotation class_annotation = 170; -} - -extend Constructor { - repeated Annotation constructor_annotation = 170; - optional InlineIrBody inline_constructor_ir_body = 171; -} - -extend Function { - repeated Annotation function_annotation = 170; - optional InlineIrBody inline_ir_body = 171; - optional int32 function_file = 172; -} - -extend Property { - repeated Annotation property_annotation = 170; - repeated Annotation property_getter_annotation = 177; - repeated Annotation property_setter_annotation = 178; - optional bool has_backing_field = 171; - optional bool used_as_variable = 172; - optional Annotation.Argument.Value compile_time_value = 173; - optional InlineIrBody inline_getter_ir_body = 174; - optional InlineIrBody inline_setter_ir_body = 175; - optional int32 property_file = 176; -} - -extend EnumEntry { - repeated Annotation enum_entry_annotation = 170; - optional int32 enum_entry_ordinal = 171; -} - -extend ValueParameter { - repeated Annotation parameter_annotation = 170; -} - -extend Type { - repeated Annotation type_annotation = 170; - optional string type_text = 172; // TODO: remove me -} - -extend TypeParameter { - repeated Annotation type_parameter_annotation = 170; -} - -message InlineIrBody { - // We need to refer from descriptors to ir inline body. - // And in ir we need to refer local declaration descriptors - // That requires mutual import of KonanIr and KonanLinkData. - // I break the circle here by storing encoded IR. - // May be we need to merge KonanIr into KonanLinkData. - // That'd allow mutually recursive messages. - required string encoded_ir = 11; -} - -// Konan Binary Linkdata structures. - -message LinkDataPackageFragment { - // Make if an index? - required string fq_name = 1; - required Package package = 4; - required LinkDataClasses classes = 5; - required bool is_empty = 6; - - // To construct name resolver - required QualifiedNameTable name_table = 2; - required StringTable string_table = 3; -} - -message LinkDataClasses { - // Index in the QualifiedNameIndex table. - repeated int32 class_name = 1; - repeated Class classes = 2; -} - -message LinkDataLibrary { - required string module_name = 1; - repeated string package_fragment_name = 2; - repeated string empty_package = 3; - repeated string file = 4; -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt b/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt deleted file mode 100644 index 27e29a28aec..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/descriptors/konan/KonanModuleOrigin.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.descriptors.konan - -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.isInterop - -sealed class KonanModuleOrigin { - - companion object { - val CAPABILITY = ModuleDescriptor.Capability("KonanModuleOrigin") - } -} - -sealed class CompiledKonanModuleOrigin: KonanModuleOrigin() - -class DeserializedKonanModuleOrigin(val library: KonanLibrary) : CompiledKonanModuleOrigin() - -object CurrentKonanModuleOrigin: CompiledKonanModuleOrigin() - -object SyntheticModulesOrigin : KonanModuleOrigin() - -internal fun KonanModuleOrigin.isInteropLibrary(): Boolean = when (this) { - is DeserializedKonanModuleOrigin -> this.library.isInterop - CurrentKonanModuleOrigin, SyntheticModulesOrigin -> false -} - -val ModuleDescriptor.konanModuleOrigin get() = this.getCapability(KonanModuleOrigin.CAPABILITY)!! diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt new file mode 100644 index 00000000000..45225770b91 --- /dev/null +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanFactories.kt @@ -0,0 +1,17 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.konan.library + +import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns +import org.jetbrains.kotlin.konan.util.KlibMetadataFactories +import org.jetbrains.kotlin.serialization.konan.NullFlexibleTypeDeserializer +import org.jetbrains.kotlin.storage.StorageManager + +fun createKonanBuiltIns(storageManager: StorageManager) = KonanBuiltIns(storageManager) +/** + * The default Kotlin/Native factories. + */ +object KonanFactories : KlibMetadataFactories(::createKonanBuiltIns, NullFlexibleTypeDeserializer) \ No newline at end of file diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt deleted file mode 100644 index ad6602dd21b..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibrary.kt +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library - -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.properties.Properties -import org.jetbrains.kotlin.konan.properties.propertyList -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf -import org.jetbrains.kotlin.name.FqName - -const val KLIB_PROPERTY_ABI_VERSION = "abi_version" -const val KLIB_PROPERTY_UNIQUE_NAME = "unique_name" -const val KLIB_PROPERTY_COMPILER_VERSION = "compiler_version" -const val KLIB_PROPERTY_LINKED_OPTS = "linkerOpts" -const val KLIB_PROPERTY_DEPENDS = "depends" -const val KLIB_PROPERTY_INTEROP = "interop" -const val KLIB_PROPERTY_PACKAGE = "package" -const val KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS = "exportForwardDeclarations" -const val KLIB_PROPERTY_INCLUDED_HEADERS = "includedHeaders" - -/** - * An abstraction for getting access to the information stored inside of Kotlin/Native library. - */ -interface KonanLibrary { - - val libraryName: String - val libraryFile: File - - // Whether this library is default (provided by Kotlin/Native distribution)? - val isDefault: Boolean - - // Properties: - val manifestProperties: Properties - val abiVersion: String - val linkerOpts: List - - // Paths: - val bitcodePaths: List - val includedPaths: List - - val targetList: List - - val dataFlowGraph: ByteArray? - val moduleHeaderData: KonanProtoBuf.LinkDataLibrary - fun packageMetadataParts(fqName: String): Set - fun packageMetadata(packageFqName: String, partName: String): KonanProtoBuf.LinkDataPackageFragment -} - -val KonanLibrary.uniqueName - get() = manifestProperties.getProperty(KLIB_PROPERTY_UNIQUE_NAME)!! - -val KonanLibrary.unresolvedDependencies: List - get() = manifestProperties.propertyList(KLIB_PROPERTY_DEPENDS) - -val KonanLibrary.isInterop - get() = manifestProperties.getProperty(KLIB_PROPERTY_INTEROP) == "true" - -val KonanLibrary.packageFqName - get() = manifestProperties.getProperty(KLIB_PROPERTY_PACKAGE)?.let { FqName(it) } - -val KonanLibrary.exportForwardDeclarations - get() = manifestProperties.getProperty(KLIB_PROPERTY_EXPORT_FORWARD_DECLARATIONS) - .split(' ').asSequence() - .map { it.trim() } - .filter { it.isNotEmpty() } - .map { FqName(it) } - .toList() - -val KonanLibrary.includedHeaders - get() = manifestProperties.getProperty(KLIB_PROPERTY_INCLUDED_HEADERS).split(' ') diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryLayout.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryLayout.kt deleted file mode 100644 index 51f8c5595b8..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryLayout.kt +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library - -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.target.KonanTarget - -/** - * This scheme describes the Kotlin/Native Library (KLIB) layout. - */ -interface KonanLibraryLayout { - - val libraryName: String - val libDir: File - - val source: KonanLibrarySource - - // This is a default implementation. Can't make it an assignment. - val target: KonanTarget? get() = null - - val manifestFile get() = File(libDir, KLIB_MANIFEST_FILE_NAME) - val resourcesDir get() = File(libDir, "resources") - - val targetsDir get() = File(libDir, "targets") - val targetDir get() = File(targetsDir, target!!.visibleName) - - val kotlinDir get() = File(targetDir, "kotlin") - val nativeDir get() = File(targetDir, "native") - val includedDir get() = File(targetDir, "included") - - val linkdataDir get() = File(libDir, "linkdata") - val moduleHeaderFile get() = File(linkdataDir, KLIB_MODULE_METADATA_FILE_NAME) - val dataFlowGraphFile get() = File(linkdataDir, "module_data_flow_graph") - - fun packageFragmentsDir(packageFqName: String) = - File(linkdataDir, if (packageFqName == "") "root_package" else "package_$packageFqName") - - fun packageFragmentFile(packageFqName: String, partName: String) = - File(packageFragmentsDir(packageFqName), "$partName$KLIB_METADATA_FILE_EXTENSION_WITH_DOT") -} - -sealed class KonanLibrarySource { - object KonanLibraryDir : KonanLibrarySource() - class KonanLibraryFile(val klibFile: File) : KonanLibrarySource() -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryUtils.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryUtils.kt deleted file mode 100644 index 2f22cb51fd6..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanLibraryUtils.kt +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library - -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.file.file -import org.jetbrains.kotlin.konan.file.withMutableZipFileSystem -import org.jetbrains.kotlin.konan.library.impl.DefaultMetadataReaderImpl -import org.jetbrains.kotlin.konan.library.impl.KonanLibraryImpl -import org.jetbrains.kotlin.konan.library.impl.zippedKonanLibraryChecks -import org.jetbrains.kotlin.konan.library.resolver.KonanLibraryResolver -import org.jetbrains.kotlin.konan.library.resolver.impl.KonanLibraryResolverImpl -import org.jetbrains.kotlin.konan.target.KonanTarget - -fun File.unpackZippedKonanLibraryTo(newDir: File) { - - // First, run validity checks for the given KLIB file. - zippedKonanLibraryChecks(this) - - if (newDir.exists) { - if (newDir.isDirectory) - newDir.deleteRecursively() - else - newDir.delete() - } - - this.withMutableZipFileSystem { - it.file("/").recursiveCopyTo(newDir) - } - check(newDir.exists) { "Could not unpack $this as $newDir." } -} - -fun createKonanLibrary( - libraryFile: File, - currentAbiVersion: Int, - target: KonanTarget? = null, - isDefault: Boolean = false, - metadataReader: MetadataReader = DefaultMetadataReaderImpl -): KonanLibrary = KonanLibraryImpl(libraryFile, currentAbiVersion, target, isDefault, metadataReader) - -fun SearchPathResolverWithTarget.libraryResolver(abiVersion: Int): KonanLibraryResolver = - KonanLibraryResolverImpl(this, abiVersion) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanMetadataReader.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanMetadataReader.kt deleted file mode 100644 index 985ec95defd..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/KonanMetadataReader.kt +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library - -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf - -interface MetadataReader { - fun loadSerializedModule(libraryLayout: KonanLibraryLayout): KonanProtoBuf.LinkDataLibrary - fun loadSerializedPackageFragment( - libraryLayout: KonanLibraryLayout, - packageFqName: String, - partName: String - ): KonanProtoBuf.LinkDataPackageFragment -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt deleted file mode 100644 index 5f0aa6aeece..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library - -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.target.KonanTarget - -interface SearchPathResolver { - val searchRoots: List - fun resolve(givenPath: String): File - fun defaultLinks(noStdLib: Boolean, noDefaultLibs: Boolean): List -} - -interface SearchPathResolverWithTarget : SearchPathResolver { - val target: KonanTarget -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/DefaultMetadataReaderImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/DefaultMetadataReaderImpl.kt deleted file mode 100644 index 1662a4f57eb..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/DefaultMetadataReaderImpl.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.impl - -import org.jetbrains.kotlin.konan.library.KonanLibraryLayout -import org.jetbrains.kotlin.konan.library.MetadataReader -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf -import org.jetbrains.kotlin.serialization.konan.parseModuleHeader -import org.jetbrains.kotlin.serialization.konan.parsePackageFragment - -object DefaultMetadataReaderImpl : MetadataReader { - - override fun loadSerializedModule(libraryLayout: KonanLibraryLayout): KonanProtoBuf.LinkDataLibrary = - parseModuleHeader(libraryLayout.moduleHeaderFile.readBytes()) - - override fun loadSerializedPackageFragment( - libraryLayout: KonanLibraryLayout, - packageFqName: String, - partName: String - ): KonanProtoBuf.LinkDataPackageFragment = - parsePackageFragment( - libraryLayout.packageFragmentFile(packageFqName, partName).readBytes() - ) -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryImpl.kt deleted file mode 100644 index 6c16cb822ab..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryImpl.kt +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.impl - -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.library.* -import org.jetbrains.kotlin.konan.properties.Properties -import org.jetbrains.kotlin.konan.properties.loadProperties -import org.jetbrains.kotlin.konan.properties.propertyList -import org.jetbrains.kotlin.konan.target.KonanTarget -import org.jetbrains.kotlin.konan.util.defaultTargetSubstitutions -import org.jetbrains.kotlin.konan.util.substitute -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf - -internal class KonanLibraryImpl( - override val libraryFile: File, - private val currentAbiVersion: Int, - internal val target: KonanTarget?, - override val isDefault: Boolean, - private val metadataReader: MetadataReader -) : KonanLibrary { - - // For the zipped libraries inPlace gives files from zip file system - // whereas realFiles extracts them to /tmp. - // For unzipped libraries inPlace and realFiles are the same - // providing files in the library directory. - - private val layout = createKonanLibraryLayout(libraryFile, target) - - override val libraryName: String by lazy { layout.inPlace { it.libraryName } } - - override val manifestProperties: Properties by lazy { - val properties = layout.inPlace { it.manifestFile.loadProperties() } - if (target != null) substitute(properties, defaultTargetSubstitutions(target)) - properties - } - - override val abiVersion: String - get() { - val manifestAbiVersion = manifestProperties.getProperty(KLIB_PROPERTY_ABI_VERSION) - check(currentAbiVersion.toString() == manifestAbiVersion) { - "ABI version mismatch. Compiler expects: $currentAbiVersion, the library is $manifestAbiVersion" - } - return manifestAbiVersion - } - - override val linkerOpts: List - get() = manifestProperties.propertyList(KLIB_PROPERTY_LINKED_OPTS, target!!.visibleName) - - override val bitcodePaths: List - get() = layout.realFiles { (it.kotlinDir.listFilesOrEmpty + it.nativeDir.listFilesOrEmpty).map { it.absolutePath } } - - override val includedPaths: List - get() = layout.realFiles { it.includedDir.listFilesOrEmpty.map { it.absolutePath } } - - override val targetList by lazy { layout.inPlace { it.targetsDir.listFiles.map { it.name } } } - - override val dataFlowGraph by lazy { layout.inPlace { it.dataFlowGraphFile.let { if (it.exists) it.readBytes() else null } } } - - override val moduleHeaderData: KonanProtoBuf.LinkDataLibrary by lazy { layout.inPlace { metadataReader.loadSerializedModule(it) } } - - override fun packageMetadata(packageFqName: String, partName: String) = - layout.inPlace { metadataReader.loadSerializedPackageFragment(it, packageFqName, partName) } - - override fun packageMetadataParts(fqName: String): Set = - layout.inPlace { inPlaceLayout -> - val fileList = - inPlaceLayout.packageFragmentsDir(fqName) - .listFiles - .mapNotNull { - it.name - .substringBeforeLast(KLIB_METADATA_FILE_EXTENSION_WITH_DOT, missingDelimiterValue = "") - .takeIf { it.isNotEmpty() } - } - - fileList.toSortedSet().also { - require(it.size == fileList.size) { "Duplicated names: ${fileList.groupingBy { it }.eachCount().filter { (_, count) -> count > 1 }}" } - } - } - - - override fun toString() = "$libraryName[default=$isDefault]" -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryLayoutImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryLayoutImpl.kt deleted file mode 100644 index 6f088adb6ab..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/impl/KonanLibraryLayoutImpl.kt +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.impl - -import org.jetbrains.kotlin.konan.file.* -import org.jetbrains.kotlin.konan.library.KLIB_FILE_EXTENSION -import org.jetbrains.kotlin.konan.library.KLIB_FILE_EXTENSION_WITH_DOT -import org.jetbrains.kotlin.konan.library.KonanLibraryLayout -import org.jetbrains.kotlin.konan.library.KonanLibrarySource.KonanLibraryDir -import org.jetbrains.kotlin.konan.library.KonanLibrarySource.KonanLibraryFile -import org.jetbrains.kotlin.konan.target.KonanTarget -import java.nio.file.FileSystem - -interface KonanLibraryLayoutImpl : KonanLibraryLayout { - fun inPlace(action: (KonanLibraryLayout) -> T): T - fun realFiles(action: (KonanLibraryLayout) -> T): T -} - -private class ZippedKonanLibraryLayout( - klibFile: File, - override val target: KonanTarget? -) : KonanLibraryLayoutImpl { - - init { - zippedKonanLibraryChecks(klibFile) - } - - override val libraryName = klibFile.path.removeSuffix(KLIB_FILE_EXTENSION_WITH_DOT) - override val libDir: File = File("/") - override val source = KonanLibraryFile(klibFile) - - override fun realFiles(action: (KonanLibraryLayout) -> T) = action(FileExtractor(this)) - - override fun inPlace(action: (KonanLibraryLayout) -> T) = source.klibFile.withZipFileSystem { zipFileSystem -> - action(DirectFromZip(this, zipFileSystem)) - } -} - -internal fun zippedKonanLibraryChecks(klibFile: File) { - check(klibFile.exists) { "Could not find $klibFile." } - check(klibFile.isFile) { "Expected $klibFile to be a regular file." } - - val extension = klibFile.extension - check(extension.isEmpty() || extension == KLIB_FILE_EXTENSION) { "Unexpected file extension: $extension" } -} - -private class UnzippedKonanLibraryLayout( - override val libDir: File, - override val target: KonanTarget? -) : KonanLibraryLayoutImpl { - - override val libraryName = libDir.path - override val source = KonanLibraryDir - - override fun inPlace(action: (KonanLibraryLayout) -> T) = action(this) - override fun realFiles(action: (KonanLibraryLayout) -> T) = inPlace(action) -} - -private class DirectFromZip( - zippedLayout: ZippedKonanLibraryLayout, - zipFileSystem: FileSystem -) : KonanLibraryLayout { - - override val libraryName = zippedLayout.libraryName - override val libDir = zipFileSystem.file(zippedLayout.libDir) - override val source = zippedLayout.source -} - -/** - * This class automatically extracts pieces of the library on first access. Use it if you need - * to pass extracted files to an external tool. Otherwise, stick to [DirectFromZip]. - */ -private class FileExtractor( - val zippedLayout: ZippedKonanLibraryLayout -) : KonanLibraryLayout by zippedLayout { - - override val manifestFile: File by lazy { extract(super.manifestFile) } - override val resourcesDir: File by lazy { extractDir(super.resourcesDir) } - override val includedDir: File by lazy { extractDir(super.includedDir) } - override val kotlinDir: File by lazy { extractDir(super.kotlinDir) } - override val nativeDir: File by lazy { extractDir(super.nativeDir) } - override val linkdataDir: File by lazy { extractDir(super.linkdataDir) } - - fun extract(file: File): File = zippedLayout.source.klibFile.withZipFileSystem { zipFileSystem -> - val temporary = createTempFile(file.name) - zipFileSystem.file(file).copyTo(temporary) - temporary.deleteOnExit() - temporary - } - - fun extractDir(directory: File): File = zippedLayout.source.klibFile.withZipFileSystem { zipFileSystem -> - val temporary = createTempDir(directory.name) - zipFileSystem.file(directory).recursiveCopyTo(temporary) - temporary.deleteOnExitRecursively() - temporary - } -} - -internal fun createKonanLibraryLayout(klib: File, target: KonanTarget? = null) = - if (klib.isFile) ZippedKonanLibraryLayout(klib, target) else UnzippedKonanLibraryLayout(klib, target) - diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryFacade.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryFacade.kt index db93beccf05..ed05b209642 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryFacade.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/lite/LiteKonanLibraryFacade.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.konan.library.lite import org.jetbrains.kotlin.konan.library.* +import org.jetbrains.kotlin.library.* import java.io.File import java.io.IOException import java.nio.file.Path diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanLibraryResolver.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanLibraryResolver.kt deleted file mode 100644 index 6609fadf4df..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanLibraryResolver.kt +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.resolver - -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.SearchPathResolverWithTarget - -typealias DuplicatedLibraryLogger = (String) -> Unit - -interface KonanLibraryResolver { - - val searchPathResolver: SearchPathResolverWithTarget - val abiVersion: Int - - /** - * Given the list of Kotlin/Native library names, ABI version and other parameters - * resolves libraries and evaluates dependencies between them. - */ - fun resolveWithDependencies( - libraryNames: List, - noStdLib: Boolean = false, - noDefaultLibs: Boolean = false, - logger: DuplicatedLibraryLogger? = null - ): KonanLibraryResolveResult -} - -interface KonanLibraryResolveResult { - - fun filterRoots(predicate: (KonanResolvedLibrary) -> Boolean): KonanLibraryResolveResult - - fun getFullList(order: LibraryOrder? = null): List - - fun forEach(action: (KonanLibrary, PackageAccessedHandler) -> Unit) -} - - -typealias LibraryOrder = (Iterable) -> List - -val TopologicalLibraryOrder: LibraryOrder = { input -> - val sorted = mutableListOf() - val visited = mutableSetOf() - val tempMarks = mutableSetOf() - - fun visit(node: KonanResolvedLibrary, result: MutableList) { - if (visited.contains(node)) return - if (tempMarks.contains(node)) error("Cyclic dependency in library graph.") - tempMarks.add(node) - node.resolvedDependencies.forEach { - visit(it, result) - } - visited.add(node) - result += node - } - - input.forEach next@{ - if (visited.contains(it)) return@next - visit(it, sorted) - } - - sorted -} \ No newline at end of file diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanResolvedLibrary.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanResolvedLibrary.kt deleted file mode 100644 index 8e006032df2..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/KonanResolvedLibrary.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.resolver - -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.name.FqName - -interface PackageAccessedHandler { - - fun markPackageAccessed(fqName: FqName) -} - -/** - * A [KonanLibrary] wrapper that is used for resolving library's dependencies. - */ -interface KonanResolvedLibrary: PackageAccessedHandler { - - // The library itself. - val library: KonanLibrary - - // Dependencies on other libraries. - val resolvedDependencies: List - - // Whether it is needed to linker. - val isNeededForLink: Boolean - - // Is provided by the distribution? - val isDefault: Boolean -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt deleted file mode 100644 index f75772592df..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanLibraryResolverImpl.kt +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.resolver.impl - -import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.SearchPathResolverWithTarget -import org.jetbrains.kotlin.konan.library.createKonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.* -import org.jetbrains.kotlin.konan.library.unresolvedDependencies - -internal class KonanLibraryResolverImpl( - override val searchPathResolver: SearchPathResolverWithTarget, - override val abiVersion: Int -) : KonanLibraryResolver { - - override fun resolveWithDependencies( - libraryNames: List, - noStdLib: Boolean, - noDefaultLibs: Boolean, - logger: DuplicatedLibraryLogger? - ) = findLibraries(libraryNames, noStdLib, noDefaultLibs) - .leaveDistinct(logger) - .resolveDependencies() - - /** - * Returns the list of libraries based on [libraryNames], [noStdLib] and [noDefaultLibs] criteria. - * - * This method does not return any libraries that might be available via transitive dependencies - * from the original library set (root set). - */ - private fun findLibraries( - libraryNames: List, - noStdLib: Boolean, - noDefaultLibs: Boolean - ): List { - - val userProvidedLibraries = libraryNames.asSequence() - .map { searchPathResolver.resolve(it) } - .map { createKonanLibrary(it, abiVersion, searchPathResolver.target) } - .toList() - - val defaultLibraries = searchPathResolver.defaultLinks(noStdLib, noDefaultLibs).map { - createKonanLibrary(it, abiVersion, searchPathResolver.target, isDefault = true) - } - - // Make sure the user provided ones appear first, so that - // they have precedence over defaults when duplicates are eliminated. - return userProvidedLibraries + defaultLibraries - } - - /** - * Leaves only distinct libraries (by absolute path), warns on duplicated paths. - */ - private fun List.leaveDistinct(logger: DuplicatedLibraryLogger?) = - this.groupBy { it.libraryFile.absolutePath }.let { groupedByAbsolutePath -> - warnOnLibraryDuplicates(groupedByAbsolutePath.filter { it.value.size > 1 }.keys, logger) - groupedByAbsolutePath.map { it.value.first() } - } - - private fun warnOnLibraryDuplicates(duplicatedPaths: Iterable, logger: DuplicatedLibraryLogger?) { - if (logger == null) return - duplicatedPaths.forEach { logger("library included more than once: $it") } - } - - - /** - * Given the list of root libraries does the following: - * - * 1. Evaluates other libraries that are available via transitive dependencies. - * 2. Wraps each [KonanLibrary] into a [KonanResolvedLibrary] with information about dependencies on other libraries. - * 3. Creates resulting [KonanLibraryResolveResult] object. - */ - private fun List.resolveDependencies(): KonanLibraryResolveResult { - - val rootLibraries = this.map { KonanResolvedLibraryImpl(it) } - - // As far as the list of root libraries is known from the very beginning, the result can be - // constructed from the very beginning as well. - val result = KonanLibraryResolverResultImpl(rootLibraries) - - val cache = mutableMapOf() - cache.putAll(rootLibraries.map { it.library.libraryFile.absoluteFile to it }) - - var newDependencies = rootLibraries - do { - newDependencies = newDependencies.map { library: KonanResolvedLibraryImpl -> - library.library.unresolvedDependencies.asSequence() - .map { searchPathResolver.resolve(it).absoluteFile } - .mapNotNull { - if (it in cache) { - library.addDependency(cache[it]!!) - null - } else { - val newLibrary = KonanResolvedLibraryImpl(createKonanLibrary(it, abiVersion, searchPathResolver.target)) - cache[it] = newLibrary - library.addDependency(newLibrary) - newLibrary - } - } - .toList() - }.flatten() - } while (newDependencies.isNotEmpty()) - - return result - } -} - -internal class KonanLibraryResolverResultImpl( - private val roots: List -) : KonanLibraryResolveResult { - - private val all: List by lazy { - val result = mutableSetOf().also { it.addAll(roots) } - - var newDependencies = result.toList() - do { - newDependencies = newDependencies - .map { it -> it.resolvedDependencies }.flatten() - .filter { it !in result } - result.addAll(newDependencies) - } while (newDependencies.isNotEmpty()) - - result.toList() - } - - override fun filterRoots(predicate: (KonanResolvedLibrary) -> Boolean) = - KonanLibraryResolverResultImpl(roots.filter(predicate)) - - override fun getFullList(order: LibraryOrder?) = (order?.invoke(all) ?: all).asPlain() - - override fun forEach(action: (KonanLibrary, PackageAccessedHandler) -> Unit) { - all.forEach { action(it.library, it) } - } - - private fun List.asPlain() = map { it.library } - - override fun toString() = "roots=$roots, all=$all" -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanResolvedLibraryImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanResolvedLibraryImpl.kt deleted file mode 100644 index c5a8c9d2077..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/library/resolver/impl/KonanResolvedLibraryImpl.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.library.resolver.impl - -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.KonanResolvedLibrary -import org.jetbrains.kotlin.name.FqName - -internal class KonanResolvedLibraryImpl( - override val library: KonanLibrary -) : KonanResolvedLibrary { - - private val _resolvedDependencies = mutableListOf() - private val _emptyPackages by lazy { library.moduleHeaderData.emptyPackageList } - - override val resolvedDependencies: List - get() = _resolvedDependencies - - internal fun addDependency(resolvedLibrary: KonanResolvedLibrary) = _resolvedDependencies.add(resolvedLibrary) - - override var isNeededForLink: Boolean = false - private set - - override val isDefault: Boolean - get() = library.isDefault - - override fun markPackageAccessed(fqName: FqName) { - if (!isNeededForLink // fast path - && !_emptyPackages.contains(fqName.asString()) - ) { - isNeededForLink = true - } - } - - override fun toString() = "library=$library, dependsOn=${_resolvedDependencies.joinToString { it.library.toString() }}" -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/konan/util/KonanFactories.kt b/konan/library-reader/src/org/jetbrains/kotlin/konan/util/KonanFactories.kt deleted file mode 100644 index 321b648dc42..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/konan/util/KonanFactories.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.konan.util - -import org.jetbrains.kotlin.descriptors.konan.KonanModuleDescriptorFactory -import org.jetbrains.kotlin.descriptors.konan.impl.KonanModuleDescriptorFactoryImpl -import org.jetbrains.kotlin.serialization.konan.KonanDeserializedModuleDescriptorFactory -import org.jetbrains.kotlin.serialization.konan.KonanDeserializedPackageFragmentsFactory -import org.jetbrains.kotlin.serialization.konan.KonanResolvedModuleDescriptorsFactory -import org.jetbrains.kotlin.serialization.konan.impl.KonanDeserializedModuleDescriptorFactoryImpl -import org.jetbrains.kotlin.serialization.konan.impl.KonanDeserializedPackageFragmentsFactoryImpl -import org.jetbrains.kotlin.serialization.konan.impl.KonanResolvedModuleDescriptorsFactoryImpl - -/** - * The default Kotlin/Native factories. - */ -object KonanFactories { - - /** - * The default [KonanModuleDescriptorFactory] factory instance. - */ - val DefaultDescriptorFactory: KonanModuleDescriptorFactory = KonanModuleDescriptorFactoryImpl - - /** - * The default [KonanDeserializedPackageFragmentsFactory] factory instance. - */ - val DefaultPackageFragmentsFactory: KonanDeserializedPackageFragmentsFactory = - KonanDeserializedPackageFragmentsFactoryImpl - - /** - * The default [KonanDeserializedModuleDescriptorFactory] factory instance. - */ - val DefaultDeserializedDescriptorFactory: KonanDeserializedModuleDescriptorFactory = - createDefaultKonanDeserializedModuleDescriptorFactory( - DefaultDescriptorFactory, DefaultPackageFragmentsFactory - ) - - /** - * The default [KonanResolvedModuleDescriptorsFactory] factory instance. - */ - val DefaultResolvedDescriptorsFactory: KonanResolvedModuleDescriptorsFactory = - createDefaultKonanResolvedModuleDescriptorsFactory(DefaultDeserializedDescriptorFactory) - - fun createDefaultKonanDeserializedModuleDescriptorFactory( - descriptorFactory: KonanModuleDescriptorFactory, - packageFragmentsFactory: KonanDeserializedPackageFragmentsFactory - ): KonanDeserializedModuleDescriptorFactory = - KonanDeserializedModuleDescriptorFactoryImpl(descriptorFactory, packageFragmentsFactory) - - fun createDefaultKonanResolvedModuleDescriptorsFactory( - moduleDescriptorFactory: KonanDeserializedModuleDescriptorFactory - ): KonanResolvedModuleDescriptorsFactory = KonanResolvedModuleDescriptorsFactoryImpl(moduleDescriptorFactory) -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/metadata/konan/KonanProtoBuf.java b/konan/library-reader/src/org/jetbrains/kotlin/metadata/konan/KonanProtoBuf.java deleted file mode 100644 index 9ba56fa6471..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/metadata/konan/KonanProtoBuf.java +++ /dev/null @@ -1,3754 +0,0 @@ -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: konan/library-reader/src/konan.proto - -package org.jetbrains.kotlin.metadata.konan; - -public final class KonanProtoBuf { - private KonanProtoBuf() {} - public static void registerAllExtensions( - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite registry) { - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.packageFqName); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.classAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.constructorAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.inlineConstructorIrBody); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.functionAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.inlineIrBody); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.functionFile); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.propertyAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.propertyGetterAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.propertySetterAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.hasBackingField); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.usedAsVariable); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.compileTimeValue); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.inlineGetterIrBody); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.inlineSetterIrBody); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.propertyFile); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.enumEntryAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.enumEntryOrdinal); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.parameterAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.typeAnnotation); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.typeText); - registry.add(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.typeParameterAnnotation); - } - public interface InlineIrBodyOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.konan.InlineIrBody) - org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { - - /** - * required string encoded_ir = 11; - * - *
-     * We need to refer from descriptors to ir inline body.
-     * And in ir we need to refer local declaration descriptors
-     * That requires mutual import of KonanIr and KonanLinkData.
-     * I break the circle here by storing encoded IR.
-     * May be we need to merge KonanIr into KonanLinkData.
-     * That'd allow mutually recursive messages.
-     * 
- */ - boolean hasEncodedIr(); - /** - * required string encoded_ir = 11; - * - *
-     * We need to refer from descriptors to ir inline body.
-     * And in ir we need to refer local declaration descriptors
-     * That requires mutual import of KonanIr and KonanLinkData.
-     * I break the circle here by storing encoded IR.
-     * May be we need to merge KonanIr into KonanLinkData.
-     * That'd allow mutually recursive messages.
-     * 
- */ - java.lang.String getEncodedIr(); - /** - * required string encoded_ir = 11; - * - *
-     * We need to refer from descriptors to ir inline body.
-     * And in ir we need to refer local declaration descriptors
-     * That requires mutual import of KonanIr and KonanLinkData.
-     * I break the circle here by storing encoded IR.
-     * May be we need to merge KonanIr into KonanLinkData.
-     * That'd allow mutually recursive messages.
-     * 
- */ - org.jetbrains.kotlin.protobuf.ByteString - getEncodedIrBytes(); - } - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.InlineIrBody} - */ - public static final class InlineIrBody extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements - // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.konan.InlineIrBody) - InlineIrBodyOrBuilder { - // Use InlineIrBody.newBuilder() to construct. - private InlineIrBody(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private InlineIrBody(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} - - private static final InlineIrBody defaultInstance; - public static InlineIrBody getDefaultInstance() { - return defaultInstance; - } - - public InlineIrBody getDefaultInstanceForType() { - return defaultInstance; - } - - private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - private InlineIrBody( - 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 90: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000001; - encodedIr_ = 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 { - 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 InlineIrBody parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new InlineIrBody(input, extensionRegistry); - } - }; - - @java.lang.Override - public org.jetbrains.kotlin.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - public static final int ENCODED_IR_FIELD_NUMBER = 11; - private java.lang.Object encodedIr_; - /** - * required string encoded_ir = 11; - * - *
-     * We need to refer from descriptors to ir inline body.
-     * And in ir we need to refer local declaration descriptors
-     * That requires mutual import of KonanIr and KonanLinkData.
-     * I break the circle here by storing encoded IR.
-     * May be we need to merge KonanIr into KonanLinkData.
-     * That'd allow mutually recursive messages.
-     * 
- */ - public boolean hasEncodedIr() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required string encoded_ir = 11; - * - *
-     * We need to refer from descriptors to ir inline body.
-     * And in ir we need to refer local declaration descriptors
-     * That requires mutual import of KonanIr and KonanLinkData.
-     * I break the circle here by storing encoded IR.
-     * May be we need to merge KonanIr into KonanLinkData.
-     * That'd allow mutually recursive messages.
-     * 
- */ - public java.lang.String getEncodedIr() { - java.lang.Object ref = encodedIr_; - 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()) { - encodedIr_ = s; - } - return s; - } - } - /** - * required string encoded_ir = 11; - * - *
-     * We need to refer from descriptors to ir inline body.
-     * And in ir we need to refer local declaration descriptors
-     * That requires mutual import of KonanIr and KonanLinkData.
-     * I break the circle here by storing encoded IR.
-     * May be we need to merge KonanIr into KonanLinkData.
-     * That'd allow mutually recursive messages.
-     * 
- */ - public org.jetbrains.kotlin.protobuf.ByteString - getEncodedIrBytes() { - java.lang.Object ref = encodedIr_; - if (ref instanceof java.lang.String) { - org.jetbrains.kotlin.protobuf.ByteString b = - org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - encodedIr_ = b; - return b; - } else { - return (org.jetbrains.kotlin.protobuf.ByteString) ref; - } - } - - private void initFields() { - encodedIr_ = ""; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - if (!hasEncodedIr()) { - 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.writeBytes(11, getEncodedIrBytes()); - } - 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 - .computeBytesSize(11, getEncodedIrBytes()); - } - 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.metadata.konan.KonanProtoBuf.InlineIrBody parseFrom( - org.jetbrains.kotlin.protobuf.ByteString data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody 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.metadata.konan.KonanProtoBuf.InlineIrBody parseFrom(byte[] data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody 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.metadata.konan.KonanProtoBuf.InlineIrBody parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody 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.metadata.konan.KonanProtoBuf.InlineIrBody parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody 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.metadata.konan.KonanProtoBuf.InlineIrBody parseFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody 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.metadata.konan.KonanProtoBuf.InlineIrBody prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.InlineIrBody} - */ - public static final class Builder extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody, Builder> - implements - // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.konan.InlineIrBody) - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBodyOrBuilder { - // Construct using org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - encodedIr_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody getDefaultInstanceForType() { - return org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody build() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody buildPartial() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody result = new org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.encodedIr_ = encodedIr_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody other) { - if (other == org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance()) return this; - if (other.hasEncodedIr()) { - bitField0_ |= 0x00000001; - encodedIr_ = other.encodedIr_; - - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - - public final boolean isInitialized() { - if (!hasEncodedIr()) { - - 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.metadata.konan.KonanProtoBuf.InlineIrBody parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - private java.lang.Object encodedIr_ = ""; - /** - * required string encoded_ir = 11; - * - *
-       * We need to refer from descriptors to ir inline body.
-       * And in ir we need to refer local declaration descriptors
-       * That requires mutual import of KonanIr and KonanLinkData.
-       * I break the circle here by storing encoded IR.
-       * May be we need to merge KonanIr into KonanLinkData.
-       * That'd allow mutually recursive messages.
-       * 
- */ - public boolean hasEncodedIr() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required string encoded_ir = 11; - * - *
-       * We need to refer from descriptors to ir inline body.
-       * And in ir we need to refer local declaration descriptors
-       * That requires mutual import of KonanIr and KonanLinkData.
-       * I break the circle here by storing encoded IR.
-       * May be we need to merge KonanIr into KonanLinkData.
-       * That'd allow mutually recursive messages.
-       * 
- */ - public java.lang.String getEncodedIr() { - java.lang.Object ref = encodedIr_; - 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()) { - encodedIr_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * required string encoded_ir = 11; - * - *
-       * We need to refer from descriptors to ir inline body.
-       * And in ir we need to refer local declaration descriptors
-       * That requires mutual import of KonanIr and KonanLinkData.
-       * I break the circle here by storing encoded IR.
-       * May be we need to merge KonanIr into KonanLinkData.
-       * That'd allow mutually recursive messages.
-       * 
- */ - public org.jetbrains.kotlin.protobuf.ByteString - getEncodedIrBytes() { - java.lang.Object ref = encodedIr_; - if (ref instanceof String) { - org.jetbrains.kotlin.protobuf.ByteString b = - org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - encodedIr_ = b; - return b; - } else { - return (org.jetbrains.kotlin.protobuf.ByteString) ref; - } - } - /** - * required string encoded_ir = 11; - * - *
-       * We need to refer from descriptors to ir inline body.
-       * And in ir we need to refer local declaration descriptors
-       * That requires mutual import of KonanIr and KonanLinkData.
-       * I break the circle here by storing encoded IR.
-       * May be we need to merge KonanIr into KonanLinkData.
-       * That'd allow mutually recursive messages.
-       * 
- */ - public Builder setEncodedIr( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - encodedIr_ = value; - - return this; - } - /** - * required string encoded_ir = 11; - * - *
-       * We need to refer from descriptors to ir inline body.
-       * And in ir we need to refer local declaration descriptors
-       * That requires mutual import of KonanIr and KonanLinkData.
-       * I break the circle here by storing encoded IR.
-       * May be we need to merge KonanIr into KonanLinkData.
-       * That'd allow mutually recursive messages.
-       * 
- */ - public Builder clearEncodedIr() { - bitField0_ = (bitField0_ & ~0x00000001); - encodedIr_ = getDefaultInstance().getEncodedIr(); - - return this; - } - /** - * required string encoded_ir = 11; - * - *
-       * We need to refer from descriptors to ir inline body.
-       * And in ir we need to refer local declaration descriptors
-       * That requires mutual import of KonanIr and KonanLinkData.
-       * I break the circle here by storing encoded IR.
-       * May be we need to merge KonanIr into KonanLinkData.
-       * That'd allow mutually recursive messages.
-       * 
- */ - public Builder setEncodedIrBytes( - org.jetbrains.kotlin.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - encodedIr_ = value; - - return this; - } - - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.konan.InlineIrBody) - } - - static { - defaultInstance = new InlineIrBody(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.konan.InlineIrBody) - } - - public interface LinkDataPackageFragmentOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment) - org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { - - /** - * required string fq_name = 1; - * - *
-     * Make if an index?
-     * 
- */ - boolean hasFqName(); - /** - * required string fq_name = 1; - * - *
-     * Make if an index?
-     * 
- */ - java.lang.String getFqName(); - /** - * required string fq_name = 1; - * - *
-     * Make if an index?
-     * 
- */ - org.jetbrains.kotlin.protobuf.ByteString - getFqNameBytes(); - - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - boolean hasPackage(); - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - org.jetbrains.kotlin.metadata.ProtoBuf.Package getPackage(); - - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - boolean hasClasses(); - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses getClasses(); - - /** - * required bool is_empty = 6; - */ - boolean hasIsEmpty(); - /** - * required bool is_empty = 6; - */ - boolean getIsEmpty(); - - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-     * To construct name resolver
-     * 
- */ - boolean hasNameTable(); - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-     * To construct name resolver
-     * 
- */ - org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getNameTable(); - - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - boolean hasStringTable(); - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStringTable(); - } - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment} - */ - public static final class LinkDataPackageFragment extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements - // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment) - LinkDataPackageFragmentOrBuilder { - // Use LinkDataPackageFragment.newBuilder() to construct. - private LinkDataPackageFragment(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private LinkDataPackageFragment(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} - - private static final LinkDataPackageFragment defaultInstance; - public static LinkDataPackageFragment getDefaultInstance() { - return defaultInstance; - } - - public LinkDataPackageFragment getDefaultInstanceForType() { - return defaultInstance; - } - - private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - private LinkDataPackageFragment( - 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: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000001; - fqName_ = bs; - break; - } - case 18: { - org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder subBuilder = null; - if (((bitField0_ & 0x00000010) == 0x00000010)) { - subBuilder = nameTable_.toBuilder(); - } - nameTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(nameTable_); - nameTable_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000010; - break; - } - case 26: { - org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder subBuilder = null; - if (((bitField0_ & 0x00000020) == 0x00000020)) { - subBuilder = stringTable_.toBuilder(); - } - stringTable_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(stringTable_); - stringTable_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000020; - break; - } - case 34: { - org.jetbrains.kotlin.metadata.ProtoBuf.Package.Builder subBuilder = null; - if (((bitField0_ & 0x00000002) == 0x00000002)) { - subBuilder = package_.toBuilder(); - } - package_ = input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Package.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(package_); - package_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000002; - break; - } - case 42: { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.Builder subBuilder = null; - if (((bitField0_ & 0x00000004) == 0x00000004)) { - subBuilder = classes_.toBuilder(); - } - classes_ = input.readMessage(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.PARSER, extensionRegistry); - if (subBuilder != null) { - subBuilder.mergeFrom(classes_); - classes_ = subBuilder.buildPartial(); - } - bitField0_ |= 0x00000004; - break; - } - case 48: { - bitField0_ |= 0x00000008; - isEmpty_ = input.readBool(); - 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 LinkDataPackageFragment parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new LinkDataPackageFragment(input, extensionRegistry); - } - }; - - @java.lang.Override - public org.jetbrains.kotlin.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - public static final int FQ_NAME_FIELD_NUMBER = 1; - private java.lang.Object fqName_; - /** - * required string fq_name = 1; - * - *
-     * Make if an index?
-     * 
- */ - public boolean hasFqName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required string fq_name = 1; - * - *
-     * Make if an index?
-     * 
- */ - public java.lang.String getFqName() { - java.lang.Object ref = fqName_; - 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()) { - fqName_ = s; - } - return s; - } - } - /** - * required string fq_name = 1; - * - *
-     * Make if an index?
-     * 
- */ - public org.jetbrains.kotlin.protobuf.ByteString - getFqNameBytes() { - java.lang.Object ref = fqName_; - if (ref instanceof java.lang.String) { - org.jetbrains.kotlin.protobuf.ByteString b = - org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - fqName_ = b; - return b; - } else { - return (org.jetbrains.kotlin.protobuf.ByteString) ref; - } - } - - public static final int PACKAGE_FIELD_NUMBER = 4; - private org.jetbrains.kotlin.metadata.ProtoBuf.Package package_; - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public boolean hasPackage() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.Package getPackage() { - return package_; - } - - public static final int CLASSES_FIELD_NUMBER = 5; - private org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses classes_; - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public boolean hasClasses() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses getClasses() { - return classes_; - } - - public static final int IS_EMPTY_FIELD_NUMBER = 6; - private boolean isEmpty_; - /** - * required bool is_empty = 6; - */ - public boolean hasIsEmpty() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - /** - * required bool is_empty = 6; - */ - public boolean getIsEmpty() { - return isEmpty_; - } - - public static final int NAME_TABLE_FIELD_NUMBER = 2; - private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable nameTable_; - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-     * To construct name resolver
-     * 
- */ - public boolean hasNameTable() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-     * To construct name resolver
-     * 
- */ - public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getNameTable() { - return nameTable_; - } - - public static final int STRING_TABLE_FIELD_NUMBER = 3; - private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable stringTable_; - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public boolean hasStringTable() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStringTable() { - return stringTable_; - } - - private void initFields() { - fqName_ = ""; - package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance(); - classes_ = org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance(); - isEmpty_ = false; - nameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); - stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized == 1) return true; - if (isInitialized == 0) return false; - - if (!hasFqName()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPackage()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasClasses()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasIsEmpty()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNameTable()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasStringTable()) { - memoizedIsInitialized = 0; - return false; - } - if (!getPackage().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - if (!getClasses().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - if (!getNameTable().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.writeBytes(1, getFqNameBytes()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeMessage(2, nameTable_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeMessage(3, stringTable_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeMessage(4, package_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeMessage(5, classes_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBool(6, isEmpty_); - } - 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 - .computeBytesSize(1, getFqNameBytes()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(2, nameTable_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(3, stringTable_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(4, package_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(5, classes_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeBoolSize(6, isEmpty_); - } - 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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment parseFrom( - org.jetbrains.kotlin.protobuf.ByteString data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment 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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment parseFrom(byte[] data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment 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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment 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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment 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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment parseFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment 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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment} - */ - public static final class Builder extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment, Builder> - implements - // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment) - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragmentOrBuilder { - // Construct using org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - fqName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000002); - classes_ = org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000004); - isEmpty_ = false; - bitField0_ = (bitField0_ & ~0x00000008); - nameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000010); - stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000020); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment getDefaultInstanceForType() { - return org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment.getDefaultInstance(); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment build() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment buildPartial() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment result = new org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.fqName_ = fqName_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.package_ = package_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.classes_ = classes_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.isEmpty_ = isEmpty_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.nameTable_ = nameTable_; - if (((from_bitField0_ & 0x00000020) == 0x00000020)) { - to_bitField0_ |= 0x00000020; - } - result.stringTable_ = stringTable_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment other) { - if (other == org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment.getDefaultInstance()) return this; - if (other.hasFqName()) { - bitField0_ |= 0x00000001; - fqName_ = other.fqName_; - - } - if (other.hasPackage()) { - mergePackage(other.getPackage()); - } - if (other.hasClasses()) { - mergeClasses(other.getClasses()); - } - if (other.hasIsEmpty()) { - setIsEmpty(other.getIsEmpty()); - } - if (other.hasNameTable()) { - mergeNameTable(other.getNameTable()); - } - if (other.hasStringTable()) { - mergeStringTable(other.getStringTable()); - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - - public final boolean isInitialized() { - if (!hasFqName()) { - - return false; - } - if (!hasPackage()) { - - return false; - } - if (!hasClasses()) { - - return false; - } - if (!hasIsEmpty()) { - - return false; - } - if (!hasNameTable()) { - - return false; - } - if (!hasStringTable()) { - - return false; - } - if (!getPackage().isInitialized()) { - - return false; - } - if (!getClasses().isInitialized()) { - - return false; - } - if (!getNameTable().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.metadata.konan.KonanProtoBuf.LinkDataPackageFragment parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataPackageFragment) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - private java.lang.Object fqName_ = ""; - /** - * required string fq_name = 1; - * - *
-       * Make if an index?
-       * 
- */ - public boolean hasFqName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required string fq_name = 1; - * - *
-       * Make if an index?
-       * 
- */ - public java.lang.String getFqName() { - java.lang.Object ref = fqName_; - 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()) { - fqName_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * required string fq_name = 1; - * - *
-       * Make if an index?
-       * 
- */ - public org.jetbrains.kotlin.protobuf.ByteString - getFqNameBytes() { - java.lang.Object ref = fqName_; - if (ref instanceof String) { - org.jetbrains.kotlin.protobuf.ByteString b = - org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - fqName_ = b; - return b; - } else { - return (org.jetbrains.kotlin.protobuf.ByteString) ref; - } - } - /** - * required string fq_name = 1; - * - *
-       * Make if an index?
-       * 
- */ - public Builder setFqName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - fqName_ = value; - - return this; - } - /** - * required string fq_name = 1; - * - *
-       * Make if an index?
-       * 
- */ - public Builder clearFqName() { - bitField0_ = (bitField0_ & ~0x00000001); - fqName_ = getDefaultInstance().getFqName(); - - return this; - } - /** - * required string fq_name = 1; - * - *
-       * Make if an index?
-       * 
- */ - public Builder setFqNameBytes( - org.jetbrains.kotlin.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - fqName_ = value; - - return this; - } - - private org.jetbrains.kotlin.metadata.ProtoBuf.Package package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance(); - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public boolean hasPackage() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.Package getPackage() { - return package_; - } - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public Builder setPackage(org.jetbrains.kotlin.metadata.ProtoBuf.Package value) { - if (value == null) { - throw new NullPointerException(); - } - package_ = value; - - bitField0_ |= 0x00000002; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public Builder setPackage( - org.jetbrains.kotlin.metadata.ProtoBuf.Package.Builder builderForValue) { - package_ = builderForValue.build(); - - bitField0_ |= 0x00000002; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public Builder mergePackage(org.jetbrains.kotlin.metadata.ProtoBuf.Package value) { - if (((bitField0_ & 0x00000002) == 0x00000002) && - package_ != org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance()) { - package_ = - org.jetbrains.kotlin.metadata.ProtoBuf.Package.newBuilder(package_).mergeFrom(value).buildPartial(); - } else { - package_ = value; - } - - bitField0_ |= 0x00000002; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.Package package = 4; - */ - public Builder clearPackage() { - package_ = org.jetbrains.kotlin.metadata.ProtoBuf.Package.getDefaultInstance(); - - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - private org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses classes_ = org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance(); - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public boolean hasClasses() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses getClasses() { - return classes_; - } - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public Builder setClasses(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses value) { - if (value == null) { - throw new NullPointerException(); - } - classes_ = value; - - bitField0_ |= 0x00000004; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public Builder setClasses( - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.Builder builderForValue) { - classes_ = builderForValue.build(); - - bitField0_ |= 0x00000004; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public Builder mergeClasses(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses value) { - if (((bitField0_ & 0x00000004) == 0x00000004) && - classes_ != org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance()) { - classes_ = - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.newBuilder(classes_).mergeFrom(value).buildPartial(); - } else { - classes_ = value; - } - - bitField0_ |= 0x00000004; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.konan.LinkDataClasses classes = 5; - */ - public Builder clearClasses() { - classes_ = org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance(); - - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - private boolean isEmpty_ ; - /** - * required bool is_empty = 6; - */ - public boolean hasIsEmpty() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - /** - * required bool is_empty = 6; - */ - public boolean getIsEmpty() { - return isEmpty_; - } - /** - * required bool is_empty = 6; - */ - public Builder setIsEmpty(boolean value) { - bitField0_ |= 0x00000008; - isEmpty_ = value; - - return this; - } - /** - * required bool is_empty = 6; - */ - public Builder clearIsEmpty() { - bitField0_ = (bitField0_ & ~0x00000008); - isEmpty_ = false; - - return this; - } - - private org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable nameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-       * To construct name resolver
-       * 
- */ - public boolean hasNameTable() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-       * To construct name resolver
-       * 
- */ - public org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable getNameTable() { - return nameTable_; - } - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-       * To construct name resolver
-       * 
- */ - public Builder setNameTable(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) { - if (value == null) { - throw new NullPointerException(); - } - nameTable_ = value; - - bitField0_ |= 0x00000010; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-       * To construct name resolver
-       * 
- */ - public Builder setNameTable( - org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.Builder builderForValue) { - nameTable_ = builderForValue.build(); - - bitField0_ |= 0x00000010; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-       * To construct name resolver
-       * 
- */ - public Builder mergeNameTable(org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable value) { - if (((bitField0_ & 0x00000010) == 0x00000010) && - nameTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance()) { - nameTable_ = - org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.newBuilder(nameTable_).mergeFrom(value).buildPartial(); - } else { - nameTable_ = value; - } - - bitField0_ |= 0x00000010; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.QualifiedNameTable name_table = 2; - * - *
-       * To construct name resolver
-       * 
- */ - public Builder clearNameTable() { - nameTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.getDefaultInstance(); - - bitField0_ = (bitField0_ & ~0x00000010); - return this; - } - - private org.jetbrains.kotlin.metadata.ProtoBuf.StringTable stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public boolean hasStringTable() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.StringTable getStringTable() { - return stringTable_; - } - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public Builder setStringTable(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) { - if (value == null) { - throw new NullPointerException(); - } - stringTable_ = value; - - bitField0_ |= 0x00000020; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public Builder setStringTable( - org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.Builder builderForValue) { - stringTable_ = builderForValue.build(); - - bitField0_ |= 0x00000020; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public Builder mergeStringTable(org.jetbrains.kotlin.metadata.ProtoBuf.StringTable value) { - if (((bitField0_ & 0x00000020) == 0x00000020) && - stringTable_ != org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance()) { - stringTable_ = - org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.newBuilder(stringTable_).mergeFrom(value).buildPartial(); - } else { - stringTable_ = value; - } - - bitField0_ |= 0x00000020; - return this; - } - /** - * required .org.jetbrains.kotlin.metadata.StringTable string_table = 3; - */ - public Builder clearStringTable() { - stringTable_ = org.jetbrains.kotlin.metadata.ProtoBuf.StringTable.getDefaultInstance(); - - bitField0_ = (bitField0_ & ~0x00000020); - return this; - } - - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment) - } - - static { - defaultInstance = new LinkDataPackageFragment(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.konan.LinkDataPackageFragment) - } - - public interface LinkDataClassesOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.konan.LinkDataClasses) - org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { - - /** - * repeated int32 class_name = 1; - * - *
-     * Index in the QualifiedNameIndex table.
-     * 
- */ - java.util.List getClassNameList(); - /** - * repeated int32 class_name = 1; - * - *
-     * Index in the QualifiedNameIndex table.
-     * 
- */ - int getClassNameCount(); - /** - * repeated int32 class_name = 1; - * - *
-     * Index in the QualifiedNameIndex table.
-     * 
- */ - int getClassName(int index); - - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - java.util.List - getClassesList(); - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - org.jetbrains.kotlin.metadata.ProtoBuf.Class getClasses(int index); - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - int getClassesCount(); - } - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.LinkDataClasses} - */ - public static final class LinkDataClasses extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements - // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.konan.LinkDataClasses) - LinkDataClassesOrBuilder { - // Use LinkDataClasses.newBuilder() to construct. - private LinkDataClasses(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private LinkDataClasses(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} - - private static final LinkDataClasses defaultInstance; - public static LinkDataClasses getDefaultInstance() { - return defaultInstance; - } - - public LinkDataClasses getDefaultInstanceForType() { - return defaultInstance; - } - - private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - private LinkDataClasses( - 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; - } - case 18: { - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { - classes_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000002; - } - classes_.add(input.readMessage(org.jetbrains.kotlin.metadata.ProtoBuf.Class.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)) { - className_ = java.util.Collections.unmodifiableList(className_); - } - if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { - classes_ = java.util.Collections.unmodifiableList(classes_); - } - 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 LinkDataClasses parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new LinkDataClasses(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; - * - *
-     * Index in the QualifiedNameIndex table.
-     * 
- */ - public java.util.List - getClassNameList() { - return className_; - } - /** - * repeated int32 class_name = 1; - * - *
-     * Index in the QualifiedNameIndex table.
-     * 
- */ - public int getClassNameCount() { - return className_.size(); - } - /** - * repeated int32 class_name = 1; - * - *
-     * Index in the QualifiedNameIndex table.
-     * 
- */ - public int getClassName(int index) { - return className_.get(index); - } - - public static final int CLASSES_FIELD_NUMBER = 2; - private java.util.List classes_; - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public java.util.List getClassesList() { - return classes_; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public java.util.List - getClassesOrBuilderList() { - return classes_; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public int getClassesCount() { - return classes_.size(); - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.Class getClasses(int index) { - return classes_.get(index); - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.ClassOrBuilder getClassesOrBuilder( - int index) { - return classes_.get(index); - } - - private void initFields() { - className_ = java.util.Collections.emptyList(); - classes_ = 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 < getClassesCount(); i++) { - if (!getClasses(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 < className_.size(); i++) { - output.writeInt32(1, className_.get(i)); - } - for (int i = 0; i < classes_.size(); i++) { - output.writeMessage(2, classes_.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; - size += 1 * getClassNameList().size(); - } - for (int i = 0; i < classes_.size(); i++) { - size += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeMessageSize(2, classes_.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.metadata.konan.KonanProtoBuf.LinkDataClasses parseFrom( - org.jetbrains.kotlin.protobuf.ByteString data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses 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.metadata.konan.KonanProtoBuf.LinkDataClasses parseFrom(byte[] data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses 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.metadata.konan.KonanProtoBuf.LinkDataClasses parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses 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.metadata.konan.KonanProtoBuf.LinkDataClasses parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses 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.metadata.konan.KonanProtoBuf.LinkDataClasses parseFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses 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.metadata.konan.KonanProtoBuf.LinkDataClasses prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.LinkDataClasses} - */ - public static final class Builder extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses, Builder> - implements - // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.konan.LinkDataClasses) - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClassesOrBuilder { - // Construct using org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.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); - classes_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses getDefaultInstanceForType() { - return org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance(); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses build() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses buildPartial() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses result = new org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses(this); - int from_bitField0_ = bitField0_; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - className_ = java.util.Collections.unmodifiableList(className_); - bitField0_ = (bitField0_ & ~0x00000001); - } - result.className_ = className_; - if (((bitField0_ & 0x00000002) == 0x00000002)) { - classes_ = java.util.Collections.unmodifiableList(classes_); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.classes_ = classes_; - return result; - } - - public Builder mergeFrom(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses other) { - if (other == org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses.getDefaultInstance()) return this; - if (!other.className_.isEmpty()) { - if (className_.isEmpty()) { - className_ = other.className_; - bitField0_ = (bitField0_ & ~0x00000001); - } else { - ensureClassNameIsMutable(); - className_.addAll(other.className_); - } - - } - if (!other.classes_.isEmpty()) { - if (classes_.isEmpty()) { - classes_ = other.classes_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensureClassesIsMutable(); - classes_.addAll(other.classes_); - } - - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - - public final boolean isInitialized() { - for (int i = 0; i < getClassesCount(); i++) { - if (!getClasses(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.metadata.konan.KonanProtoBuf.LinkDataClasses parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataClasses) 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; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public java.util.List - getClassNameList() { - return java.util.Collections.unmodifiableList(className_); - } - /** - * repeated int32 class_name = 1; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public int getClassNameCount() { - return className_.size(); - } - /** - * repeated int32 class_name = 1; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public int getClassName(int index) { - return className_.get(index); - } - /** - * repeated int32 class_name = 1; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public Builder setClassName( - int index, int value) { - ensureClassNameIsMutable(); - className_.set(index, value); - - return this; - } - /** - * repeated int32 class_name = 1; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public Builder addClassName(int value) { - ensureClassNameIsMutable(); - className_.add(value); - - return this; - } - /** - * repeated int32 class_name = 1; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public Builder addAllClassName( - java.lang.Iterable values) { - ensureClassNameIsMutable(); - org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( - values, className_); - - return this; - } - /** - * repeated int32 class_name = 1; - * - *
-       * Index in the QualifiedNameIndex table.
-       * 
- */ - public Builder clearClassName() { - className_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000001); - - return this; - } - - private java.util.List classes_ = - java.util.Collections.emptyList(); - private void ensureClassesIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { - classes_ = new java.util.ArrayList(classes_); - bitField0_ |= 0x00000002; - } - } - - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public java.util.List getClassesList() { - return java.util.Collections.unmodifiableList(classes_); - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public int getClassesCount() { - return classes_.size(); - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public org.jetbrains.kotlin.metadata.ProtoBuf.Class getClasses(int index) { - return classes_.get(index); - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder setClasses( - int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class value) { - if (value == null) { - throw new NullPointerException(); - } - ensureClassesIsMutable(); - classes_.set(index, value); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder setClasses( - int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) { - ensureClassesIsMutable(); - classes_.set(index, builderForValue.build()); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder addClasses(org.jetbrains.kotlin.metadata.ProtoBuf.Class value) { - if (value == null) { - throw new NullPointerException(); - } - ensureClassesIsMutable(); - classes_.add(value); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder addClasses( - int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class value) { - if (value == null) { - throw new NullPointerException(); - } - ensureClassesIsMutable(); - classes_.add(index, value); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder addClasses( - org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) { - ensureClassesIsMutable(); - classes_.add(builderForValue.build()); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder addClasses( - int index, org.jetbrains.kotlin.metadata.ProtoBuf.Class.Builder builderForValue) { - ensureClassesIsMutable(); - classes_.add(index, builderForValue.build()); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder addAllClasses( - java.lang.Iterable values) { - ensureClassesIsMutable(); - org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( - values, classes_); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder clearClasses() { - classes_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); - - return this; - } - /** - * repeated .org.jetbrains.kotlin.metadata.Class classes = 2; - */ - public Builder removeClasses(int index) { - ensureClassesIsMutable(); - classes_.remove(index); - - return this; - } - - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.konan.LinkDataClasses) - } - - static { - defaultInstance = new LinkDataClasses(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.konan.LinkDataClasses) - } - - public interface LinkDataLibraryOrBuilder extends - // @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.metadata.konan.LinkDataLibrary) - org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { - - /** - * required string module_name = 1; - */ - boolean hasModuleName(); - /** - * required string module_name = 1; - */ - java.lang.String getModuleName(); - /** - * required string module_name = 1; - */ - org.jetbrains.kotlin.protobuf.ByteString - getModuleNameBytes(); - - /** - * repeated string package_fragment_name = 2; - */ - org.jetbrains.kotlin.protobuf.ProtocolStringList - getPackageFragmentNameList(); - /** - * repeated string package_fragment_name = 2; - */ - int getPackageFragmentNameCount(); - /** - * repeated string package_fragment_name = 2; - */ - java.lang.String getPackageFragmentName(int index); - /** - * repeated string package_fragment_name = 2; - */ - org.jetbrains.kotlin.protobuf.ByteString - getPackageFragmentNameBytes(int index); - - /** - * repeated string empty_package = 3; - */ - org.jetbrains.kotlin.protobuf.ProtocolStringList - getEmptyPackageList(); - /** - * repeated string empty_package = 3; - */ - int getEmptyPackageCount(); - /** - * repeated string empty_package = 3; - */ - java.lang.String getEmptyPackage(int index); - /** - * repeated string empty_package = 3; - */ - org.jetbrains.kotlin.protobuf.ByteString - getEmptyPackageBytes(int index); - - /** - * repeated string file = 4; - */ - org.jetbrains.kotlin.protobuf.ProtocolStringList - getFileList(); - /** - * repeated string file = 4; - */ - int getFileCount(); - /** - * repeated string file = 4; - */ - java.lang.String getFile(int index); - /** - * repeated string file = 4; - */ - org.jetbrains.kotlin.protobuf.ByteString - getFileBytes(int index); - } - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.LinkDataLibrary} - */ - public static final class LinkDataLibrary extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite implements - // @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.metadata.konan.LinkDataLibrary) - LinkDataLibraryOrBuilder { - // Use LinkDataLibrary.newBuilder() to construct. - private LinkDataLibrary(org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder builder) { - super(builder); - this.unknownFields = builder.getUnknownFields(); - } - private LinkDataLibrary(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.ByteString.EMPTY;} - - private static final LinkDataLibrary defaultInstance; - public static LinkDataLibrary getDefaultInstance() { - return defaultInstance; - } - - public LinkDataLibrary getDefaultInstanceForType() { - return defaultInstance; - } - - private final org.jetbrains.kotlin.protobuf.ByteString unknownFields; - private LinkDataLibrary( - 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: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - bitField0_ |= 0x00000001; - moduleName_ = bs; - break; - } - case 18: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { - packageFragmentName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(); - mutable_bitField0_ |= 0x00000002; - } - packageFragmentName_.add(bs); - break; - } - case 26: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - emptyPackage_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(); - mutable_bitField0_ |= 0x00000004; - } - emptyPackage_.add(bs); - break; - } - case 34: { - org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes(); - if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) { - file_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(); - mutable_bitField0_ |= 0x00000008; - } - file_.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_ & 0x00000002) == 0x00000002)) { - packageFragmentName_ = packageFragmentName_.getUnmodifiableView(); - } - if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { - emptyPackage_ = emptyPackage_.getUnmodifiableView(); - } - if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { - file_ = file_.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 LinkDataLibrary parsePartialFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input, - org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return new LinkDataLibrary(input, extensionRegistry); - } - }; - - @java.lang.Override - public org.jetbrains.kotlin.protobuf.Parser getParserForType() { - return PARSER; - } - - private int bitField0_; - public static final int MODULE_NAME_FIELD_NUMBER = 1; - private java.lang.Object moduleName_; - /** - * required string module_name = 1; - */ - public boolean hasModuleName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required string module_name = 1; - */ - public java.lang.String getModuleName() { - java.lang.Object ref = moduleName_; - 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()) { - moduleName_ = s; - } - return s; - } - } - /** - * required string module_name = 1; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getModuleNameBytes() { - java.lang.Object ref = moduleName_; - if (ref instanceof java.lang.String) { - org.jetbrains.kotlin.protobuf.ByteString b = - org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - moduleName_ = b; - return b; - } else { - return (org.jetbrains.kotlin.protobuf.ByteString) ref; - } - } - - public static final int PACKAGE_FRAGMENT_NAME_FIELD_NUMBER = 2; - private org.jetbrains.kotlin.protobuf.LazyStringList packageFragmentName_; - /** - * repeated string package_fragment_name = 2; - */ - public org.jetbrains.kotlin.protobuf.ProtocolStringList - getPackageFragmentNameList() { - return packageFragmentName_; - } - /** - * repeated string package_fragment_name = 2; - */ - public int getPackageFragmentNameCount() { - return packageFragmentName_.size(); - } - /** - * repeated string package_fragment_name = 2; - */ - public java.lang.String getPackageFragmentName(int index) { - return packageFragmentName_.get(index); - } - /** - * repeated string package_fragment_name = 2; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getPackageFragmentNameBytes(int index) { - return packageFragmentName_.getByteString(index); - } - - public static final int EMPTY_PACKAGE_FIELD_NUMBER = 3; - private org.jetbrains.kotlin.protobuf.LazyStringList emptyPackage_; - /** - * repeated string empty_package = 3; - */ - public org.jetbrains.kotlin.protobuf.ProtocolStringList - getEmptyPackageList() { - return emptyPackage_; - } - /** - * repeated string empty_package = 3; - */ - public int getEmptyPackageCount() { - return emptyPackage_.size(); - } - /** - * repeated string empty_package = 3; - */ - public java.lang.String getEmptyPackage(int index) { - return emptyPackage_.get(index); - } - /** - * repeated string empty_package = 3; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getEmptyPackageBytes(int index) { - return emptyPackage_.getByteString(index); - } - - public static final int FILE_FIELD_NUMBER = 4; - private org.jetbrains.kotlin.protobuf.LazyStringList file_; - /** - * repeated string file = 4; - */ - public org.jetbrains.kotlin.protobuf.ProtocolStringList - getFileList() { - return file_; - } - /** - * repeated string file = 4; - */ - public int getFileCount() { - return file_.size(); - } - /** - * repeated string file = 4; - */ - public java.lang.String getFile(int index) { - return file_.get(index); - } - /** - * repeated string file = 4; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getFileBytes(int index) { - return file_.getByteString(index); - } - - private void initFields() { - moduleName_ = ""; - packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - file_ = 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; - - if (!hasModuleName()) { - 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.writeBytes(1, getModuleNameBytes()); - } - for (int i = 0; i < packageFragmentName_.size(); i++) { - output.writeBytes(2, packageFragmentName_.getByteString(i)); - } - for (int i = 0; i < emptyPackage_.size(); i++) { - output.writeBytes(3, emptyPackage_.getByteString(i)); - } - for (int i = 0; i < file_.size(); i++) { - output.writeBytes(4, file_.getByteString(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 - .computeBytesSize(1, getModuleNameBytes()); - } - { - int dataSize = 0; - for (int i = 0; i < packageFragmentName_.size(); i++) { - dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeBytesSizeNoTag(packageFragmentName_.getByteString(i)); - } - size += dataSize; - size += 1 * getPackageFragmentNameList().size(); - } - { - int dataSize = 0; - for (int i = 0; i < emptyPackage_.size(); i++) { - dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeBytesSizeNoTag(emptyPackage_.getByteString(i)); - } - size += dataSize; - size += 1 * getEmptyPackageList().size(); - } - { - int dataSize = 0; - for (int i = 0; i < file_.size(); i++) { - dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream - .computeBytesSizeNoTag(file_.getByteString(i)); - } - size += dataSize; - size += 1 * getFileList().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.metadata.konan.KonanProtoBuf.LinkDataLibrary parseFrom( - org.jetbrains.kotlin.protobuf.ByteString data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary 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.metadata.konan.KonanProtoBuf.LinkDataLibrary parseFrom(byte[] data) - throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException { - return PARSER.parseFrom(data); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary 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.metadata.konan.KonanProtoBuf.LinkDataLibrary parseFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary 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.metadata.konan.KonanProtoBuf.LinkDataLibrary parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - return PARSER.parseDelimitedFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary 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.metadata.konan.KonanProtoBuf.LinkDataLibrary parseFrom( - org.jetbrains.kotlin.protobuf.CodedInputStream input) - throws java.io.IOException { - return PARSER.parseFrom(input); - } - public static org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary 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.metadata.konan.KonanProtoBuf.LinkDataLibrary prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - /** - * Protobuf type {@code org.jetbrains.kotlin.metadata.konan.LinkDataLibrary} - */ - public static final class Builder extends - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.Builder< - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary, Builder> - implements - // @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.metadata.konan.LinkDataLibrary) - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibraryOrBuilder { - // Construct using org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - moduleName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000004); - file_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary getDefaultInstanceForType() { - return org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary.getDefaultInstance(); - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary build() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - public org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary buildPartial() { - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary result = new org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.moduleName_ = moduleName_; - if (((bitField0_ & 0x00000002) == 0x00000002)) { - packageFragmentName_ = packageFragmentName_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.packageFragmentName_ = packageFragmentName_; - if (((bitField0_ & 0x00000004) == 0x00000004)) { - emptyPackage_ = emptyPackage_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.emptyPackage_ = emptyPackage_; - if (((bitField0_ & 0x00000008) == 0x00000008)) { - file_ = file_.getUnmodifiableView(); - bitField0_ = (bitField0_ & ~0x00000008); - } - result.file_ = file_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary other) { - if (other == org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary.getDefaultInstance()) return this; - if (other.hasModuleName()) { - bitField0_ |= 0x00000001; - moduleName_ = other.moduleName_; - - } - if (!other.packageFragmentName_.isEmpty()) { - if (packageFragmentName_.isEmpty()) { - packageFragmentName_ = other.packageFragmentName_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensurePackageFragmentNameIsMutable(); - packageFragmentName_.addAll(other.packageFragmentName_); - } - - } - if (!other.emptyPackage_.isEmpty()) { - if (emptyPackage_.isEmpty()) { - emptyPackage_ = other.emptyPackage_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureEmptyPackageIsMutable(); - emptyPackage_.addAll(other.emptyPackage_); - } - - } - if (!other.file_.isEmpty()) { - if (file_.isEmpty()) { - file_ = other.file_; - bitField0_ = (bitField0_ & ~0x00000008); - } else { - ensureFileIsMutable(); - file_.addAll(other.file_); - } - - } - setUnknownFields( - getUnknownFields().concat(other.unknownFields)); - return this; - } - - public final boolean isInitialized() { - if (!hasModuleName()) { - - 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.metadata.konan.KonanProtoBuf.LinkDataLibrary parsedMessage = null; - try { - parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); - } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.LinkDataLibrary) e.getUnfinishedMessage(); - throw e; - } finally { - if (parsedMessage != null) { - mergeFrom(parsedMessage); - } - } - return this; - } - private int bitField0_; - - private java.lang.Object moduleName_ = ""; - /** - * required string module_name = 1; - */ - public boolean hasModuleName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - /** - * required string module_name = 1; - */ - public java.lang.String getModuleName() { - java.lang.Object ref = moduleName_; - 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()) { - moduleName_ = s; - } - return s; - } else { - return (java.lang.String) ref; - } - } - /** - * required string module_name = 1; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getModuleNameBytes() { - java.lang.Object ref = moduleName_; - if (ref instanceof String) { - org.jetbrains.kotlin.protobuf.ByteString b = - org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8( - (java.lang.String) ref); - moduleName_ = b; - return b; - } else { - return (org.jetbrains.kotlin.protobuf.ByteString) ref; - } - } - /** - * required string module_name = 1; - */ - public Builder setModuleName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - moduleName_ = value; - - return this; - } - /** - * required string module_name = 1; - */ - public Builder clearModuleName() { - bitField0_ = (bitField0_ & ~0x00000001); - moduleName_ = getDefaultInstance().getModuleName(); - - return this; - } - /** - * required string module_name = 1; - */ - public Builder setModuleNameBytes( - org.jetbrains.kotlin.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - moduleName_ = value; - - return this; - } - - private org.jetbrains.kotlin.protobuf.LazyStringList packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - private void ensurePackageFragmentNameIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { - packageFragmentName_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(packageFragmentName_); - bitField0_ |= 0x00000002; - } - } - /** - * repeated string package_fragment_name = 2; - */ - public org.jetbrains.kotlin.protobuf.ProtocolStringList - getPackageFragmentNameList() { - return packageFragmentName_.getUnmodifiableView(); - } - /** - * repeated string package_fragment_name = 2; - */ - public int getPackageFragmentNameCount() { - return packageFragmentName_.size(); - } - /** - * repeated string package_fragment_name = 2; - */ - public java.lang.String getPackageFragmentName(int index) { - return packageFragmentName_.get(index); - } - /** - * repeated string package_fragment_name = 2; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getPackageFragmentNameBytes(int index) { - return packageFragmentName_.getByteString(index); - } - /** - * repeated string package_fragment_name = 2; - */ - public Builder setPackageFragmentName( - int index, java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePackageFragmentNameIsMutable(); - packageFragmentName_.set(index, value); - - return this; - } - /** - * repeated string package_fragment_name = 2; - */ - public Builder addPackageFragmentName( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePackageFragmentNameIsMutable(); - packageFragmentName_.add(value); - - return this; - } - /** - * repeated string package_fragment_name = 2; - */ - public Builder addAllPackageFragmentName( - java.lang.Iterable values) { - ensurePackageFragmentNameIsMutable(); - org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( - values, packageFragmentName_); - - return this; - } - /** - * repeated string package_fragment_name = 2; - */ - public Builder clearPackageFragmentName() { - packageFragmentName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - - return this; - } - /** - * repeated string package_fragment_name = 2; - */ - public Builder addPackageFragmentNameBytes( - org.jetbrains.kotlin.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePackageFragmentNameIsMutable(); - packageFragmentName_.add(value); - - return this; - } - - private org.jetbrains.kotlin.protobuf.LazyStringList emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - private void ensureEmptyPackageIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { - emptyPackage_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(emptyPackage_); - bitField0_ |= 0x00000004; - } - } - /** - * repeated string empty_package = 3; - */ - public org.jetbrains.kotlin.protobuf.ProtocolStringList - getEmptyPackageList() { - return emptyPackage_.getUnmodifiableView(); - } - /** - * repeated string empty_package = 3; - */ - public int getEmptyPackageCount() { - return emptyPackage_.size(); - } - /** - * repeated string empty_package = 3; - */ - public java.lang.String getEmptyPackage(int index) { - return emptyPackage_.get(index); - } - /** - * repeated string empty_package = 3; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getEmptyPackageBytes(int index) { - return emptyPackage_.getByteString(index); - } - /** - * repeated string empty_package = 3; - */ - public Builder setEmptyPackage( - int index, java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensureEmptyPackageIsMutable(); - emptyPackage_.set(index, value); - - return this; - } - /** - * repeated string empty_package = 3; - */ - public Builder addEmptyPackage( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensureEmptyPackageIsMutable(); - emptyPackage_.add(value); - - return this; - } - /** - * repeated string empty_package = 3; - */ - public Builder addAllEmptyPackage( - java.lang.Iterable values) { - ensureEmptyPackageIsMutable(); - org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( - values, emptyPackage_); - - return this; - } - /** - * repeated string empty_package = 3; - */ - public Builder clearEmptyPackage() { - emptyPackage_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000004); - - return this; - } - /** - * repeated string empty_package = 3; - */ - public Builder addEmptyPackageBytes( - org.jetbrains.kotlin.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - ensureEmptyPackageIsMutable(); - emptyPackage_.add(value); - - return this; - } - - private org.jetbrains.kotlin.protobuf.LazyStringList file_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - private void ensureFileIsMutable() { - if (!((bitField0_ & 0x00000008) == 0x00000008)) { - file_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(file_); - bitField0_ |= 0x00000008; - } - } - /** - * repeated string file = 4; - */ - public org.jetbrains.kotlin.protobuf.ProtocolStringList - getFileList() { - return file_.getUnmodifiableView(); - } - /** - * repeated string file = 4; - */ - public int getFileCount() { - return file_.size(); - } - /** - * repeated string file = 4; - */ - public java.lang.String getFile(int index) { - return file_.get(index); - } - /** - * repeated string file = 4; - */ - public org.jetbrains.kotlin.protobuf.ByteString - getFileBytes(int index) { - return file_.getByteString(index); - } - /** - * repeated string file = 4; - */ - public Builder setFile( - int index, java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensureFileIsMutable(); - file_.set(index, value); - - return this; - } - /** - * repeated string file = 4; - */ - public Builder addFile( - java.lang.String value) { - if (value == null) { - throw new NullPointerException(); - } - ensureFileIsMutable(); - file_.add(value); - - return this; - } - /** - * repeated string file = 4; - */ - public Builder addAllFile( - java.lang.Iterable values) { - ensureFileIsMutable(); - org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( - values, file_); - - return this; - } - /** - * repeated string file = 4; - */ - public Builder clearFile() { - file_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000008); - - return this; - } - /** - * repeated string file = 4; - */ - public Builder addFileBytes( - org.jetbrains.kotlin.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - ensureFileIsMutable(); - file_.add(value); - - return this; - } - - // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.konan.LinkDataLibrary) - } - - static { - defaultInstance = new LinkDataLibrary(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.metadata.konan.LinkDataLibrary) - } - - public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 171; - /** - * 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, - 171, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, - java.lang.Integer.class); - public static final int CLASS_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int CONSTRUCTOR_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int INLINE_CONSTRUCTOR_IR_BODY_FIELD_NUMBER = 171; - /** - * extend .org.jetbrains.kotlin.metadata.Constructor { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Constructor, - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody> inlineConstructorIrBody = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Constructor.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - null, - 171, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.class); - public static final int FUNCTION_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int INLINE_IR_BODY_FIELD_NUMBER = 171; - /** - * extend .org.jetbrains.kotlin.metadata.Function { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Function, - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody> inlineIrBody = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - null, - 171, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.class); - public static final int FUNCTION_FILE_FIELD_NUMBER = 172; - /** - * extend .org.jetbrains.kotlin.metadata.Function { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Function, - java.lang.Integer> functionFile = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Function.getDefaultInstance(), - 0, - null, - null, - 172, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, - java.lang.Integer.class); - public static final int PROPERTY_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int PROPERTY_GETTER_ANNOTATION_FIELD_NUMBER = 177; - /** - * 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, - 177, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int PROPERTY_SETTER_ANNOTATION_FIELD_NUMBER = 178; - /** - * 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, - 178, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int HAS_BACKING_FIELD_FIELD_NUMBER = 171; - /** - * extend .org.jetbrains.kotlin.metadata.Property { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Property, - java.lang.Boolean> hasBackingField = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), - false, - null, - null, - 171, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.BOOL, - java.lang.Boolean.class); - public static final int USED_AS_VARIABLE_FIELD_NUMBER = 172; - /** - * extend .org.jetbrains.kotlin.metadata.Property { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Property, - java.lang.Boolean> usedAsVariable = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), - false, - null, - null, - 172, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.BOOL, - java.lang.Boolean.class); - public static final int COMPILE_TIME_VALUE_FIELD_NUMBER = 173; - /** - * 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, - 173, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.Argument.Value.class); - public static final int INLINE_GETTER_IR_BODY_FIELD_NUMBER = 174; - /** - * 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.konan.KonanProtoBuf.InlineIrBody> inlineGetterIrBody = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - null, - 174, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.class); - public static final int INLINE_SETTER_IR_BODY_FIELD_NUMBER = 175; - /** - * 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.konan.KonanProtoBuf.InlineIrBody> inlineSetterIrBody = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.getDefaultInstance(), - null, - 175, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - org.jetbrains.kotlin.metadata.konan.KonanProtoBuf.InlineIrBody.class); - public static final int PROPERTY_FILE_FIELD_NUMBER = 176; - /** - * extend .org.jetbrains.kotlin.metadata.Property { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Property, - java.lang.Integer> propertyFile = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Property.getDefaultInstance(), - 0, - null, - null, - 176, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, - java.lang.Integer.class); - public static final int ENUM_ENTRY_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int ENUM_ENTRY_ORDINAL_FIELD_NUMBER = 171; - /** - * extend .org.jetbrains.kotlin.metadata.EnumEntry { ... } - */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry, - java.lang.Integer> enumEntryOrdinal = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.EnumEntry.getDefaultInstance(), - 0, - null, - null, - 171, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.INT32, - java.lang.Integer.class); - public static final int PARAMETER_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int TYPE_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - public static final int TYPE_TEXT_FIELD_NUMBER = 172; - /** - * extend .org.jetbrains.kotlin.metadata.Type { ... } - * - *
-   * TODO: remove me
-   * 
- */ - public static final - org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension< - org.jetbrains.kotlin.metadata.ProtoBuf.Type, - java.lang.String> typeText = org.jetbrains.kotlin.protobuf.GeneratedMessageLite - .newSingularGeneratedExtension( - org.jetbrains.kotlin.metadata.ProtoBuf.Type.getDefaultInstance(), - "", - null, - null, - 172, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.STRING, - java.lang.String.class); - public static final int TYPE_PARAMETER_ANNOTATION_FIELD_NUMBER = 170; - /** - * 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, - 170, - org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE, - false, - org.jetbrains.kotlin.metadata.ProtoBuf.Annotation.class); - - static { - } - - // @@protoc_insertion_point(outer_class_scope) -} \ No newline at end of file diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializationUtils.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializationUtils.kt deleted file mode 100644 index d4aa8d4eae0..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializationUtils.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan - -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf - -fun parsePackageFragment(packageMetadata: ByteArray): KonanProtoBuf.LinkDataPackageFragment = - KonanProtoBuf.LinkDataPackageFragment.parseFrom(packageMetadata, KonanSerializerProtocol.extensionRegistry) - -fun parseModuleHeader(libraryMetadata: ByteArray): KonanProtoBuf.LinkDataLibrary = - KonanProtoBuf.LinkDataLibrary.parseFrom(libraryMetadata, KonanSerializerProtocol.extensionRegistry) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedModuleDescriptorFactory.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedModuleDescriptorFactory.kt deleted file mode 100644 index 5690000b8d9..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedModuleDescriptorFactory.kt +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan - -import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.descriptors.konan.KonanModuleDescriptorFactory -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.PackageAccessedHandler -import org.jetbrains.kotlin.storage.LockBasedStorageManager -import org.jetbrains.kotlin.storage.StorageManager - -interface KonanDeserializedModuleDescriptorFactory { - - val descriptorFactory: KonanModuleDescriptorFactory - val packageFragmentsFactory: KonanDeserializedPackageFragmentsFactory - - fun createDescriptor( - library: KonanLibrary, - languageVersionSettings: LanguageVersionSettings, - storageManager: StorageManager, - builtIns: KotlinBuiltIns, - packageAccessedHandler: PackageAccessedHandler? = null, - customCapabilities: Map, Any?> = emptyMap() - ): ModuleDescriptorImpl - - /** - * Please use this method with care: As far as it creates an instance of [KotlinBuiltIns] it should be - * normally used for creation of the very first (e.g. "stdlib") module in the set of created modules. - */ - fun createDescriptorAndNewBuiltIns( - library: KonanLibrary, - languageVersionSettings: LanguageVersionSettings, - storageManager: StorageManager, - packageAccessedHandler: PackageAccessedHandler? = null, - customCapabilities: Map, Any?> = emptyMap() - ): ModuleDescriptorImpl -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedPackageFragmentsFactory.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedPackageFragmentsFactory.kt deleted file mode 100644 index 9e122e1de11..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanDeserializedPackageFragmentsFactory.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan - -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.PackageAccessedHandler -import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration -import org.jetbrains.kotlin.storage.StorageManager - -interface KonanDeserializedPackageFragmentsFactory { - - fun createDeserializedPackageFragments( - library: KonanLibrary, - packageFragmentNames: List, - moduleDescriptor: ModuleDescriptor, - packageAccessedHandler: PackageAccessedHandler?, - storageManager: StorageManager - ): List - - fun createSyntheticPackageFragments( - library: KonanLibrary, - deserializedPackageFragments: List, - moduleDescriptor: ModuleDescriptor - ): List - - fun createPackageFragmentProvider( - library: KonanLibrary, - packageAccessedHandler: PackageAccessedHandler?, - packageFragmentNames: List, - storageManager: StorageManager, - moduleDescriptor: ModuleDescriptor, - configuration: DeserializationConfiguration - ): PackageFragmentProvider - - fun createForwardDeclarationHackPackagePartProvider( - storageManager: StorageManager, - module: ModuleDescriptorImpl - ): PackageFragmentProviderImpl -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanResolvedModuleDescriptorsFactory.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanResolvedModuleDescriptorsFactory.kt deleted file mode 100644 index d6fd9b324b4..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanResolvedModuleDescriptorsFactory.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan - -import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.KonanLibraryResolveResult -import org.jetbrains.kotlin.storage.StorageManager - -interface KonanResolvedModuleDescriptorsFactory { - - val moduleDescriptorFactory: KonanDeserializedModuleDescriptorFactory - - /** - * Given the [resolvedLibraries] creates the list of [ModuleDescriptorImpl]s with properly installed - * inter-dependencies. The result of this method is returned in a form of [KonanResolvedModuleDescriptors] instance. - * - * Please use this method with care: Unless this method accepts `null` for [builtIns], it is not recommended to - * invoke it this way. If you are compiling a source module, please supply the non-null [builtIns] from the - * source module, so that all modules created in your compilation session will share the same built-ins instance. - * - * Otherwise (if `null` was supplied), a new instance of [KotlinBuiltIns] will be created. The created built-ins - * instance will be shared by all modules created in this method. But this instance will have no connection - * with probably existing built-ins instance of your source module(s). - */ - fun createResolved( - resolvedLibraries: KonanLibraryResolveResult, - storageManager: StorageManager, - builtIns: KotlinBuiltIns?, - languageVersionSettings: LanguageVersionSettings, - customAction: ((KonanLibrary, ModuleDescriptorImpl) -> Unit)? = null, - customCapabilitiesGenerator: ((KonanLibrary) -> Map, Any?>)? = null - ): KonanResolvedModuleDescriptors -} - -class KonanResolvedModuleDescriptors( - - /** - * The list of modules each representing an individual Kotlin/Native library. All modules - * in this list have properly installed dependencies, i.e. module has all necessary dependencies - * on other modules plus a dependency on the [forwardDeclarationsModule]. - */ - val resolvedDescriptors: List, - - /** - * This is a module which "contains" forward declarations. - * Note: this module should be unique per compilation and should always be the last dependency of any module. - */ - val forwardDeclarationsModule: ModuleDescriptorImpl -) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanSerializerProtocol.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanSerializerProtocol.kt deleted file mode 100644 index 23b93ad77ff..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/KonanSerializerProtocol.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan - -import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf -import org.jetbrains.kotlin.protobuf.ExtensionRegistryLite -import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol - -object KonanSerializerProtocol : SerializerExtensionProtocol( - ExtensionRegistryLite.newInstance().apply(KonanProtoBuf::registerAllExtensions), - KonanProtoBuf.packageFqName, - KonanProtoBuf.constructorAnnotation, - KonanProtoBuf.classAnnotation, - KonanProtoBuf.functionAnnotation, - KonanProtoBuf.propertyAnnotation, - KonanProtoBuf.propertyGetterAnnotation, - KonanProtoBuf.propertySetterAnnotation, - KonanProtoBuf.enumEntryAnnotation, - KonanProtoBuf.compileTimeValue, - KonanProtoBuf.parameterAnnotation, - KonanProtoBuf.typeAnnotation, - KonanProtoBuf.typeParameterAnnotation -) diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedModuleDescriptorFactoryImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedModuleDescriptorFactoryImpl.kt deleted file mode 100644 index 49eeb09b481..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanDeserializedModuleDescriptorFactoryImpl.kt +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan.impl - -import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.descriptors.konan.DeserializedKonanModuleOrigin -import org.jetbrains.kotlin.descriptors.konan.KonanModuleDescriptorFactory -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.PackageAccessedHandler -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration -import org.jetbrains.kotlin.serialization.konan.KonanDeserializedModuleDescriptorFactory -import org.jetbrains.kotlin.serialization.konan.KonanDeserializedPackageFragmentsFactory -import org.jetbrains.kotlin.storage.StorageManager - -internal class KonanDeserializedModuleDescriptorFactoryImpl( - override val descriptorFactory: KonanModuleDescriptorFactory, - override val packageFragmentsFactory: KonanDeserializedPackageFragmentsFactory -) : KonanDeserializedModuleDescriptorFactory { - - override fun createDescriptor( - library: KonanLibrary, - languageVersionSettings: LanguageVersionSettings, - storageManager: StorageManager, - builtIns: KotlinBuiltIns, - packageAccessedHandler: PackageAccessedHandler?, - customCapabilities: Map, Any?> - ) = createDescriptorOptionalBuiltIns( - library, - languageVersionSettings, - storageManager, - builtIns, - packageAccessedHandler, - customCapabilities - ) - - override fun createDescriptorAndNewBuiltIns( - library: KonanLibrary, - languageVersionSettings: LanguageVersionSettings, - storageManager: StorageManager, - packageAccessedHandler: PackageAccessedHandler?, - customCapabilities: Map, Any?> - ) = createDescriptorOptionalBuiltIns(library, languageVersionSettings, storageManager, null, packageAccessedHandler, customCapabilities) - - private fun createDescriptorOptionalBuiltIns( - library: KonanLibrary, - languageVersionSettings: LanguageVersionSettings, - storageManager: StorageManager, - builtIns: KotlinBuiltIns?, - packageAccessedHandler: PackageAccessedHandler?, - customCapabilities: Map, Any?> - ): ModuleDescriptorImpl { - - val libraryProto = library.moduleHeaderData - - val moduleName = Name.special(libraryProto.moduleName) - val moduleOrigin = DeserializedKonanModuleOrigin(library) - - val moduleDescriptor = if (builtIns != null) - descriptorFactory.createDescriptor(moduleName, storageManager, builtIns, moduleOrigin, customCapabilities) - else - descriptorFactory.createDescriptorAndNewBuiltIns(moduleName, storageManager, moduleOrigin, customCapabilities) - - val deserializationConfiguration = CompilerDeserializationConfiguration(languageVersionSettings) - - val provider = packageFragmentsFactory.createPackageFragmentProvider( - library, - packageAccessedHandler, - libraryProto.packageFragmentNameList, - storageManager, - moduleDescriptor, - deserializationConfiguration - ) - - moduleDescriptor.initialize(provider) - - return moduleDescriptor - } -} diff --git a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanResolvedModuleDescriptorsFactoryImpl.kt b/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanResolvedModuleDescriptorsFactoryImpl.kt deleted file mode 100644 index 980fe52bb81..00000000000 --- a/konan/library-reader/src/org/jetbrains/kotlin/serialization/konan/impl/KonanResolvedModuleDescriptorsFactoryImpl.kt +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * 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.serialization.konan.impl - -import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.config.LanguageVersionSettings -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl -import org.jetbrains.kotlin.descriptors.konan.KonanModuleOrigin -import org.jetbrains.kotlin.descriptors.konan.SyntheticModulesOrigin -import org.jetbrains.kotlin.incremental.components.LookupLocation -import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.konan.library.KonanLibrary -import org.jetbrains.kotlin.konan.library.resolver.KonanLibraryResolveResult -import org.jetbrains.kotlin.konan.library.resolver.PackageAccessedHandler -import org.jetbrains.kotlin.konan.util.profile -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns -import org.jetbrains.kotlin.resolve.scopes.MemberScope -import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl -import org.jetbrains.kotlin.serialization.konan.KonanDeserializedModuleDescriptorFactory -import org.jetbrains.kotlin.serialization.konan.KonanResolvedModuleDescriptors -import org.jetbrains.kotlin.serialization.konan.KonanResolvedModuleDescriptorsFactory -import org.jetbrains.kotlin.storage.LockBasedStorageManager -import org.jetbrains.kotlin.storage.StorageManager -import org.jetbrains.kotlin.storage.getValue -import org.jetbrains.kotlin.utils.Printer - -class KonanResolvedModuleDescriptorsFactoryImpl( - override val moduleDescriptorFactory: KonanDeserializedModuleDescriptorFactory -) : KonanResolvedModuleDescriptorsFactory { - - override fun createResolved( - resolvedLibraries: KonanLibraryResolveResult, - storageManager: StorageManager, - builtIns: KotlinBuiltIns?, - languageVersionSettings: LanguageVersionSettings, - customAction: ((KonanLibrary, ModuleDescriptorImpl) -> Unit)?, - customCapabilitiesGenerator: ((KonanLibrary) -> Map, Any?>)? - ): KonanResolvedModuleDescriptors { - - val moduleDescriptors = mutableListOf() - @Suppress("NAME_SHADOWING") - var builtIns = builtIns - - // Build module descriptors. - resolvedLibraries.forEach { library, packageAccessedHandler -> - profile("Loading ${library.libraryName}") { - - val customCapabilities = customCapabilitiesGenerator?.invoke(library) ?: emptyMap() - - // MutableModuleContext needs ModuleDescriptorImpl, rather than ModuleDescriptor. - val moduleDescriptor = createDescriptorOptionalBuiltsIns( - library, languageVersionSettings, storageManager, builtIns, packageAccessedHandler, customCapabilities - ) - builtIns = moduleDescriptor.builtIns - moduleDescriptors.add(moduleDescriptor) - - customAction?.invoke(library, moduleDescriptor) - } - } - - val forwardDeclarationsModule = createForwardDeclarationsModule(builtIns, storageManager) - - // Set inter-dependencies between module descriptors, add forwarding declarations module. - for (module in moduleDescriptors) { - // Yes, just to all of them. - module.setDependencies(moduleDescriptors + forwardDeclarationsModule) - } - - return KonanResolvedModuleDescriptors(moduleDescriptors, forwardDeclarationsModule) - } - - private fun createForwardDeclarationsModule( - builtIns: KotlinBuiltIns?, - storageManager: StorageManager - ): ModuleDescriptorImpl { - - val name = Name.special("") - val module = createDescriptorOptionalBuiltsIns(name, storageManager, builtIns, SyntheticModulesOrigin) - - val packageFragmentProvider = - moduleDescriptorFactory.packageFragmentsFactory.createForwardDeclarationHackPackagePartProvider(storageManager, module) - - module.initialize(packageFragmentProvider) - module.setDependencies(module) - - return module - } - - private fun createDescriptorOptionalBuiltsIns( - name: Name, - storageManager: StorageManager, - builtIns: KotlinBuiltIns?, - moduleOrigin: KonanModuleOrigin - ) = if (builtIns != null) - moduleDescriptorFactory.descriptorFactory.createDescriptor(name, storageManager, builtIns, moduleOrigin) - else - moduleDescriptorFactory.descriptorFactory.createDescriptorAndNewBuiltIns(name, storageManager, moduleOrigin) - - private fun createDescriptorOptionalBuiltsIns( - library: KonanLibrary, - languageVersionSettings: LanguageVersionSettings, - storageManager: StorageManager, - builtIns: KotlinBuiltIns?, - packageAccessedHandler: PackageAccessedHandler?, - customCapabilities: Map, Any?> - ) = if (builtIns != null) - moduleDescriptorFactory.createDescriptor( - library, - languageVersionSettings, - storageManager, - builtIns, - packageAccessedHandler, - customCapabilities - ) - else - moduleDescriptorFactory.createDescriptorAndNewBuiltIns( - library, - languageVersionSettings, - storageManager, - packageAccessedHandler, - customCapabilities - ) -} - -// FIXME(ddol): decouple and move interop-specific logic back to Kotlin/Native. -internal object ForwardDeclarationsFqNames { - - val packageName = FqName("kotlinx.cinterop") - - val cNames = FqName("cnames") - val cNamesStructs = cNames.child(Name.identifier("structs")) - - val objCNames = FqName("objcnames") - val objCNamesClasses = objCNames.child(Name.identifier("classes")) - val objCNamesProtocols = objCNames.child(Name.identifier("protocols")) -} diff --git a/settings.gradle b/settings.gradle index 341729fdfdf..c80c7c2c3e5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -25,6 +25,7 @@ include ":kotlin-build-common", ":compiler:util", ":kotlin-util-io", ":kotlin-util-klib", + ":kotlin-util-klib-metadata", ":daemon-common", ":daemon-common-new", ":kotlin-daemon", @@ -336,6 +337,7 @@ project(':compiler:ir.serialization.common').projectDir = "$rootDir/compiler/ir/ project(':compiler:ir.serialization.js').projectDir = "$rootDir/compiler/ir/serialization.js" as File project(':kotlin-util-io').projectDir = "$rootDir/compiler/util-io" as File project(':kotlin-util-klib').projectDir = "$rootDir/compiler/util-klib" as File +project(':kotlin-util-klib-metadata').projectDir = "$rootDir/compiler/util-klib-metadata" as File project(':kotlin-native:kotlin-native-utils').projectDir = "$rootDir/konan/utils" as File project(':kotlin-native:kotlin-native-library-reader').projectDir = "$rootDir/konan/library-reader" as File project(':kotlin-native:commonizer').projectDir = "$rootDir/konan/commonizer" as File