diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java index b13669a0ec1..b5d753e810d 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java @@ -27,13 +27,16 @@ import org.jetbrains.annotations.TestOnly; import org.jetbrains.kotlin.backend.common.output.OutputFile; import org.jetbrains.kotlin.backend.common.output.OutputFileCollection; import org.jetbrains.kotlin.codegen.state.GenerationState; +import org.jetbrains.kotlin.load.kotlin.PackageParts; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; +import org.jetbrains.kotlin.serialization.jvm.JvmPackageTable; import org.jetbrains.org.objectweb.asm.Type; +import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.StringWriter; +import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.*; @@ -86,29 +89,43 @@ public class ClassFileFactory implements OutputFileCollection { } private void writeModuleMappings(Collection values) { + final JvmPackageTable.PackageTable.Builder builder = JvmPackageTable.PackageTable.newBuilder(); String outputFilePath = getMappingFileName(state.getModuleName()); - final StringWriter moduleMapping = new StringWriter(1024); - for (PackageCodegen codegen : values) { - codegen.getPackageParts().serialize(moduleMapping); - } - state.getProgress().reportOutput(Collections.emptyList(), new File(outputFilePath)); - //TODO: source files? - generators.put(outputFilePath, new OutAndSourceFileList(Collections.emptyList()) { - @Override - public byte[] asBytes(ClassBuilderFactory factory) { - try { - return moduleMapping.toString().getBytes("UTF-8"); - } - catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - } - @Override - public String asText(ClassBuilderFactory factory) { - return moduleMapping.toString(); - } - }); + for (PackageCodegen codegen : values) { + PackageParts.Companion.serialize(codegen.getPackageParts(), builder); + } + + if (builder.getPackagePartsCount() != 0) { + state.getProgress().reportOutput(Collections.emptyList(), new File(outputFilePath)); + //TODO: source files? + generators.put(outputFilePath, new OutAndSourceFileList(Collections.emptyList()) { + @Override + public byte[] asBytes(ClassBuilderFactory factory) { + try { + ByteArrayOutputStream moduleMapping = new ByteArrayOutputStream(1024); + builder.build().writeTo(moduleMapping); + return moduleMapping.toByteArray(); + } + catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public String asText(ClassBuilderFactory factory) { + try { + return new String(asBytes(factory), "UTF-8"); + } + catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } + } + }); + } } @NotNull diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java index ef01dcdd2d5..56824eb61d4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PackageCodegen.java @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.codegen.context.MethodContext; import org.jetbrains.kotlin.codegen.context.PackageContext; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.config.IncrementalCompilation; +import org.jetbrains.kotlin.load.kotlin.KotlinPackage; import org.jetbrains.kotlin.load.kotlin.PackageParts; import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus; import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor; @@ -120,7 +121,7 @@ public class PackageCodegen { return v; } }); - packageParts = new PackageParts(fqName.asString().replaceAll("\\.", "/")); + packageParts = new PackageParts(fqName.asString()); } // Returns null if file has callables in several files @@ -338,7 +339,8 @@ public class PackageCodegen { if (!generatePackagePart || !state.getGenerateDeclaredClassFilter().shouldGeneratePackagePart(file)) return null; - packageParts.getParts().add(packagePartType.getInternalName()); + String name = packagePartType.getInternalName(); + packageParts.getParts().add(name.substring(name.lastIndexOf('/') + 1)); ClassBuilder builder = state.getFactory().newVisitor(PackagePart(file, packageFragment), packagePartType, file); diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt index 838815d2bb5..eda6220ff29 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt @@ -32,8 +32,8 @@ public class JvmPackagePartProvider(val env: KotlinCoreEnvironment) : PackagePar }.filter { it?.findChild("META-INF") != null }.filterNotNull() } - override fun findPackageParts(packageInternalName: String): List { - val pathParts = packageInternalName.split('/') + override fun findPackageParts(packageFqName: String): List { + val pathParts = packageFqName.split('.') val mappings = roots.filter { //filter all roots by package path existing pathParts.fold(it) { @@ -47,9 +47,9 @@ public class JvmPackagePartProvider(val env: KotlinCoreEnvironment) : PackagePar }.filterNotNull().flatMap { it.children.filter { it.name.endsWith(ModuleMapping.MAPPING_FILE_EXT) }.toList() }.map { - ModuleMapping(String(it.contentsToByteArray(), "UTF-8")) + ModuleMapping(it.contentsToByteArray()) } - return mappings.map { it.findPackageParts(packageInternalName) }.filterNotNull().flatMap { it.parts }.distinct() + return mappings.map { it.findPackageParts(packageFqName) }.filterNotNull().flatMap { it.parts }.distinct() } } \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java b/compiler/frontend/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java new file mode 100644 index 00000000000..b6254e17d0b --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/kotlin/idea/KotlinModuleFileType.java @@ -0,0 +1,81 @@ +/* + * 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.idea; + +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.LanguageFileType; +import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.NotNullLazyValue; +import com.intellij.openapi.vfs.VirtualFile; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; + +public class KotlinModuleFileType implements FileType { + public static final String EXTENSION = "kotlin_module"; + public static final KotlinModuleFileType INSTANCE = new KotlinModuleFileType(); + + private final NotNullLazyValue myIcon = new NotNullLazyValue() { + @NotNull + @Override + protected Icon compute() { + return IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.png"); + } + }; + + private KotlinModuleFileType() {} + + @Override + @NotNull + public String getName() { + return EXTENSION; + } + + @Override + @NotNull + public String getDescription() { + return getName(); + } + + @Override + @NotNull + public String getDefaultExtension() { + return EXTENSION; + } + + @Override + public Icon getIcon() { + return myIcon.getValue(); + } + + @Override + public boolean isBinary() { + return true; + } + + @Override + public boolean isReadOnly() { + return true; + } + + @Nullable + @Override + public String getCharset(@NotNull VirtualFile file, @NotNull byte[] content) { + return null; + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmPackageTable.java b/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmPackageTable.java new file mode 100644 index 00000000000..29a77215f24 --- /dev/null +++ b/compiler/tests/org/jetbrains/kotlin/serialization/jvm/DebugJvmPackageTable.java @@ -0,0 +1,1416 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: core/descriptor.loader.java/src/jvm_package_table.debug.proto + +package org.jetbrains.kotlin.serialization.jvm; + +public final class DebugJvmPackageTable { + private DebugJvmPackageTable() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + } + public interface PackageTableOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + java.util.List + getPackagePartsList(); + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts getPackageParts(int index); + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + int getPackagePartsCount(); + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + java.util.List + getPackagePartsOrBuilderList(); + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder getPackagePartsOrBuilder( + int index); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageTable} + */ + public static final class PackageTable extends + com.google.protobuf.GeneratedMessage + implements PackageTableOrBuilder { + // Use PackageTable.newBuilder() to construct. + private PackageTable(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private PackageTable(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final PackageTable defaultInstance; + public static PackageTable getDefaultInstance() { + return defaultInstance; + } + + public PackageTable getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PackageTable( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + packageParts_.add(input.readMessage(org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = java.util.Collections.unmodifiableList(packageParts_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.class, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PackageTable parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PackageTable(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + // repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + public static final int PACKAGE_PARTS_FIELD_NUMBER = 1; + private java.util.List packageParts_; + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List getPackagePartsList() { + return packageParts_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List + getPackagePartsOrBuilderList() { + return packageParts_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public int getPackagePartsCount() { + return packageParts_.size(); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts getPackageParts(int index) { + return packageParts_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder getPackagePartsOrBuilder( + int index) { + return packageParts_.get(index); + } + + private void initFields() { + packageParts_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getPackagePartsCount(); i++) { + if (!getPackageParts(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + for (int i = 0; i < packageParts_.size(); i++) { + output.writeMessage(1, packageParts_.get(i)); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < packageParts_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, packageParts_.get(i)); + } + size += getUnknownFields().getSerializedSize(); + 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.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.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.serialization.jvm.DebugJvmPackageTable.PackageTable prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageTable} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTableOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.class, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.Builder.class); + } + + // Construct using org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getPackagePartsFieldBuilder(); + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + if (packagePartsBuilder_ == null) { + packageParts_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + } else { + packagePartsBuilder_.clear(); + } + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor; + } + + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable getDefaultInstanceForType() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.getDefaultInstance(); + } + + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable build() { + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable buildPartial() { + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable result = new org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable(this); + int from_bitField0_ = bitField0_; + if (packagePartsBuilder_ == null) { + if (((bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = java.util.Collections.unmodifiableList(packageParts_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.packageParts_ = packageParts_; + } else { + result.packageParts_ = packagePartsBuilder_.build(); + } + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable) { + return mergeFrom((org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable other) { + if (other == org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.getDefaultInstance()) return this; + if (packagePartsBuilder_ == null) { + if (!other.packageParts_.isEmpty()) { + if (packageParts_.isEmpty()) { + packageParts_ = other.packageParts_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensurePackagePartsIsMutable(); + packageParts_.addAll(other.packageParts_); + } + onChanged(); + } + } else { + if (!other.packageParts_.isEmpty()) { + if (packagePartsBuilder_.isEmpty()) { + packagePartsBuilder_.dispose(); + packagePartsBuilder_ = null; + packageParts_ = other.packageParts_; + bitField0_ = (bitField0_ & ~0x00000001); + packagePartsBuilder_ = + com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getPackagePartsFieldBuilder() : null; + } else { + packagePartsBuilder_.addAllMessages(other.packageParts_); + } + } + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + for (int i = 0; i < getPackagePartsCount(); i++) { + if (!getPackageParts(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + private java.util.List packageParts_ = + java.util.Collections.emptyList(); + private void ensurePackagePartsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = new java.util.ArrayList(packageParts_); + bitField0_ |= 0x00000001; + } + } + + private com.google.protobuf.RepeatedFieldBuilder< + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder> packagePartsBuilder_; + + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List getPackagePartsList() { + if (packagePartsBuilder_ == null) { + return java.util.Collections.unmodifiableList(packageParts_); + } else { + return packagePartsBuilder_.getMessageList(); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public int getPackagePartsCount() { + if (packagePartsBuilder_ == null) { + return packageParts_.size(); + } else { + return packagePartsBuilder_.getCount(); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts getPackageParts(int index) { + if (packagePartsBuilder_ == null) { + return packageParts_.get(index); + } else { + return packagePartsBuilder_.getMessage(index); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder setPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts value) { + if (packagePartsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackagePartsIsMutable(); + packageParts_.set(index, value); + onChanged(); + } else { + packagePartsBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder setPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder builderForValue) { + if (packagePartsBuilder_ == null) { + ensurePackagePartsIsMutable(); + packageParts_.set(index, builderForValue.build()); + onChanged(); + } else { + packagePartsBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts(org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts value) { + if (packagePartsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackagePartsIsMutable(); + packageParts_.add(value); + onChanged(); + } else { + packagePartsBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts value) { + if (packagePartsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackagePartsIsMutable(); + packageParts_.add(index, value); + onChanged(); + } else { + packagePartsBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts( + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder builderForValue) { + if (packagePartsBuilder_ == null) { + ensurePackagePartsIsMutable(); + packageParts_.add(builderForValue.build()); + onChanged(); + } else { + packagePartsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder builderForValue) { + if (packagePartsBuilder_ == null) { + ensurePackagePartsIsMutable(); + packageParts_.add(index, builderForValue.build()); + onChanged(); + } else { + packagePartsBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addAllPackageParts( + java.lang.Iterable values) { + if (packagePartsBuilder_ == null) { + ensurePackagePartsIsMutable(); + super.addAll(values, packageParts_); + onChanged(); + } else { + packagePartsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder clearPackageParts() { + if (packagePartsBuilder_ == null) { + packageParts_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + } else { + packagePartsBuilder_.clear(); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder removePackageParts(int index) { + if (packagePartsBuilder_ == null) { + ensurePackagePartsIsMutable(); + packageParts_.remove(index); + onChanged(); + } else { + packagePartsBuilder_.remove(index); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder getPackagePartsBuilder( + int index) { + return getPackagePartsFieldBuilder().getBuilder(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder getPackagePartsOrBuilder( + int index) { + if (packagePartsBuilder_ == null) { + return packageParts_.get(index); } else { + return packagePartsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List + getPackagePartsOrBuilderList() { + if (packagePartsBuilder_ != null) { + return packagePartsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(packageParts_); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder addPackagePartsBuilder() { + return getPackagePartsFieldBuilder().addBuilder( + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.getDefaultInstance()); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder addPackagePartsBuilder( + int index) { + return getPackagePartsFieldBuilder().addBuilder( + index, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.getDefaultInstance()); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List + getPackagePartsBuilderList() { + return getPackagePartsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilder< + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder> + getPackagePartsFieldBuilder() { + if (packagePartsBuilder_ == null) { + packagePartsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder>( + packageParts_, + ((bitField0_ & 0x00000001) == 0x00000001), + getParentForChildren(), + isClean()); + packageParts_ = null; + } + return packagePartsBuilder_; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.jvm.PackageTable) + } + + static { + defaultInstance = new PackageTable(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.jvm.PackageTable) + } + + public interface PackagePartsOrBuilder + extends com.google.protobuf.MessageOrBuilder { + + // required string package_fq_name = 1; + /** + * required string package_fq_name = 1; + */ + boolean hasPackageFqName(); + /** + * required string package_fq_name = 1; + */ + java.lang.String getPackageFqName(); + /** + * required string package_fq_name = 1; + */ + com.google.protobuf.ByteString + getPackageFqNameBytes(); + + // repeated string class_name = 2; + /** + * repeated string class_name = 2; + */ + java.util.List + getClassNameList(); + /** + * repeated string class_name = 2; + */ + int getClassNameCount(); + /** + * repeated string class_name = 2; + */ + java.lang.String getClassName(int index); + /** + * repeated string class_name = 2; + */ + com.google.protobuf.ByteString + getClassNameBytes(int index); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageParts} + */ + public static final class PackageParts extends + com.google.protobuf.GeneratedMessage + implements PackagePartsOrBuilder { + // Use PackageParts.newBuilder() to construct. + private PackageParts(com.google.protobuf.GeneratedMessage.Builder builder) { + super(builder); + this.unknownFields = builder.getUnknownFields(); + } + private PackageParts(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); } + + private static final PackageParts defaultInstance; + public static PackageParts getDefaultInstance() { + return defaultInstance; + } + + public PackageParts getDefaultInstanceForType() { + return defaultInstance; + } + + private final com.google.protobuf.UnknownFieldSet unknownFields; + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private PackageParts( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, unknownFields, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + packageFqName_ = input.readBytes(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + className_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.UnmodifiableLazyStringList(className_); + } + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.class, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder.class); + } + + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PackageParts parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PackageParts(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required string package_fq_name = 1; + public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 1; + private java.lang.Object packageFqName_; + /** + * required string package_fq_name = 1; + */ + public boolean hasPackageFqName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string package_fq_name = 1; + */ + public java.lang.String getPackageFqName() { + java.lang.Object ref = packageFqName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + packageFqName_ = s; + } + return s; + } + } + /** + * required string package_fq_name = 1; + */ + public com.google.protobuf.ByteString + getPackageFqNameBytes() { + java.lang.Object ref = packageFqName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageFqName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // repeated string class_name = 2; + public static final int CLASS_NAME_FIELD_NUMBER = 2; + private com.google.protobuf.LazyStringList className_; + /** + * repeated string class_name = 2; + */ + public java.util.List + getClassNameList() { + return className_; + } + /** + * repeated string class_name = 2; + */ + public int getClassNameCount() { + return className_.size(); + } + /** + * repeated string class_name = 2; + */ + public java.lang.String getClassName(int index) { + return className_.get(index); + } + /** + * repeated string class_name = 2; + */ + public com.google.protobuf.ByteString + getClassNameBytes(int index) { + return className_.getByteString(index); + } + + private void initFields() { + packageFqName_ = ""; + className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPackageFqName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getPackageFqNameBytes()); + } + for (int i = 0; i < className_.size(); i++) { + output.writeBytes(2, className_.getByteString(i)); + } + getUnknownFields().writeTo(output); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getPackageFqNameBytes()); + } + { + int dataSize = 0; + for (int i = 0; i < className_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeBytesSizeNoTag(className_.getByteString(i)); + } + size += dataSize; + size += 1 * getClassNameList().size(); + } + size += getUnknownFields().getSerializedSize(); + 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.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.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.serialization.jvm.DebugJvmPackageTable.PackageParts prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageParts} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessage.Builder + implements org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor; + } + + protected com.google.protobuf.GeneratedMessage.FieldAccessorTable + internalGetFieldAccessorTable() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable + .ensureFieldAccessorsInitialized( + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.class, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder.class); + } + + // Construct using org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessage.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + } + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + packageFqName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor; + } + + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts getDefaultInstanceForType() { + return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.getDefaultInstance(); + } + + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts build() { + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts buildPartial() { + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts result = new org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.packageFqName_ = packageFqName_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.UnmodifiableLazyStringList( + className_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.className_ = className_; + result.bitField0_ = to_bitField0_; + onBuilt(); + return result; + } + + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts) { + return mergeFrom((org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts other) { + if (other == org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.getDefaultInstance()) return this; + if (other.hasPackageFqName()) { + bitField0_ |= 0x00000001; + packageFqName_ = other.packageFqName_; + onChanged(); + } + if (!other.className_.isEmpty()) { + if (className_.isEmpty()) { + className_ = other.className_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureClassNameIsMutable(); + className_.addAll(other.className_); + } + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + return this; + } + + public final boolean isInitialized() { + if (!hasPackageFqName()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required string package_fq_name = 1; + private java.lang.Object packageFqName_ = ""; + /** + * required string package_fq_name = 1; + */ + public boolean hasPackageFqName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string package_fq_name = 1; + */ + public java.lang.String getPackageFqName() { + java.lang.Object ref = packageFqName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + packageFqName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string package_fq_name = 1; + */ + public com.google.protobuf.ByteString + getPackageFqNameBytes() { + java.lang.Object ref = packageFqName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageFqName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string package_fq_name = 1; + */ + public Builder setPackageFqName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + packageFqName_ = value; + onChanged(); + return this; + } + /** + * required string package_fq_name = 1; + */ + public Builder clearPackageFqName() { + bitField0_ = (bitField0_ & ~0x00000001); + packageFqName_ = getDefaultInstance().getPackageFqName(); + onChanged(); + return this; + } + /** + * required string package_fq_name = 1; + */ + public Builder setPackageFqNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + packageFqName_ = value; + onChanged(); + return this; + } + + // repeated string class_name = 2; + private com.google.protobuf.LazyStringList className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureClassNameIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.LazyStringArrayList(className_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string class_name = 2; + */ + public java.util.List + getClassNameList() { + return java.util.Collections.unmodifiableList(className_); + } + /** + * repeated string class_name = 2; + */ + public int getClassNameCount() { + return className_.size(); + } + /** + * repeated string class_name = 2; + */ + public java.lang.String getClassName(int index) { + return className_.get(index); + } + /** + * repeated string class_name = 2; + */ + public com.google.protobuf.ByteString + getClassNameBytes(int index) { + return className_.getByteString(index); + } + /** + * repeated string class_name = 2; + */ + public Builder setClassName( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureClassNameIsMutable(); + className_.set(index, value); + onChanged(); + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder addClassName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureClassNameIsMutable(); + className_.add(value); + onChanged(); + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder addAllClassName( + java.lang.Iterable values) { + ensureClassNameIsMutable(); + super.addAll(values, className_); + onChanged(); + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder clearClassName() { + className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder addClassNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureClassNameIsMutable(); + className_.add(value); + onChanged(); + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.jvm.PackageParts) + } + + static { + defaultInstance = new PackageParts(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.jvm.PackageParts) + } + + private static com.google.protobuf.Descriptors.Descriptor + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable; + private static com.google.protobuf.Descriptors.Descriptor + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor; + private static + com.google.protobuf.GeneratedMessage.FieldAccessorTable + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n=core/descriptor.loader.java/src/jvm_pa" + + "ckage_table.debug.proto\022&org.jetbrains.k" + + "otlin.serialization.jvm\"[\n\014PackageTable\022" + + "K\n\rpackage_parts\030\001 \003(\01324.org.jetbrains.k" + + "otlin.serialization.jvm.PackageParts\";\n\014" + + "PackageParts\022\027\n\017package_fq_name\030\001 \002(\t\022\022\n" + + "\nclass_name\030\002 \003(\tB\026B\024DebugJvmPackageTabl" + + "e" + }; + com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = + new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { + public com.google.protobuf.ExtensionRegistry assignDescriptors( + com.google.protobuf.Descriptors.FileDescriptor root) { + descriptor = root; + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor, + new java.lang.String[] { "PackageParts", }); + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor = + getDescriptor().getMessageTypes().get(1); + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable = new + com.google.protobuf.GeneratedMessage.FieldAccessorTable( + internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor, + new java.lang.String[] { "PackageFqName", "ClassName", }); + return null; + } + }; + com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }, assigner); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/core/descriptor.loader.java/src/jvm_package_table.proto b/core/descriptor.loader.java/src/jvm_package_table.proto new file mode 100644 index 00000000000..7dc49d015be --- /dev/null +++ b/core/descriptor.loader.java/src/jvm_package_table.proto @@ -0,0 +1,29 @@ +/* + * 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.serialization.jvm; + +option java_outer_classname = "JvmPackageTable"; +option optimize_for = LITE_RUNTIME; + +message PackageTable { + repeated PackageParts package_parts = 1; +} + +message PackageParts { + required string package_fq_name = 1; + repeated string class_name = 2; +} diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt index 7c33d6aa8c6..ee00ae061a1 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt @@ -49,11 +49,11 @@ public class LazyJavaPackageScope( = c.components.kotlinClassFinder.findKotlinClass(PackageClassUtils.getPackageClassId(packageFragment.fqName)) public val kotlinBinaryClasses: List by lazy { - val files = c.components.packageMapper.findPackageParts(jPackage.getFqName().asString().replace('.', '/')) + val simpleNames = c.components.packageMapper.findPackageParts(jPackage.getFqName().asString()) val packageClassId = PackageClassUtils.getPackageClassId(packageFragment.fqName).packageFqName - files.map { - val classId = ClassId(packageClassId, Name.identifierNoValidate(it.substringAfterLast("/"))) + simpleNames.map { + val classId = ClassId(packageClassId, Name.identifier(it)) c.components.kotlinClassFinder.findKotlinClass(classId) }.filterNotNull() } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt index bc31442a69d..8e8de1764d7 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt @@ -16,23 +16,30 @@ package org.jetbrains.kotlin.load.kotlin +import org.jetbrains.kotlin.serialization.jvm.JvmPackageTable import java.io.Writer -public class ModuleMapping(val moduleMapping: String) { +public class ModuleMapping(val proto: ByteArray? = null) { - val package2Parts = hashMapOf() + val packageFqName2Parts = hashMapOf() init { - for (i in moduleMapping.split("\n")) { - if(i.isEmpty()) continue - val (pakage, facade) = i.split("->") - val miniFacades = package2Parts.getOrPut(pakage, { PackageParts(pakage) }) - miniFacades.parts.add(facade) + if (proto != null) { + val parseFrom: JvmPackageTable.PackageTable? = JvmPackageTable.PackageTable.parseFrom(proto) + if (parseFrom != null) { + parseFrom.packagePartsList.map { + val packageParts = PackageParts(it.packageFqName) + packageFqName2Parts.put(it.packageFqName, packageParts) + it.classNameList.map { + packageParts.parts.add(it) + } + } + } } } - fun findPackageParts(internalPackageName: String): PackageParts? { - return package2Parts[internalPackageName] + fun findPackageParts(packageFqName: String): PackageParts? { + return packageFqName2Parts[packageFqName] } companion object { @@ -40,22 +47,16 @@ public class ModuleMapping(val moduleMapping: String) { } } -public class PackageParts(val packageInternalName: String) { +public class PackageParts(val packageFqName: String) { val parts = linkedSetOf() - fun serialize(out: Writer) { - for (i in parts) { - out.write("$packageInternalName->$i\n") - } - } - override fun equals(other: Any?): Boolean { if (other !is PackageParts) { return false; } - if (other.packageInternalName != packageInternalName) { + if (other.packageFqName != packageFqName) { return false; } @@ -73,6 +74,18 @@ public class PackageParts(val packageInternalName: String) { } override fun hashCode(): Int { - return packageInternalName.hashCode() / 3 + parts.size() / 3 + (parts.firstOrNull()?.hashCode() ?: 0) / 3 + return packageFqName.hashCode() / 3 + parts.size() / 3 + (parts.firstOrNull()?.hashCode() ?: 0) / 3 } -} \ No newline at end of file + + companion object { + @jvmStatic public fun PackageParts.serialize(builder : JvmPackageTable.PackageTable.Builder) { + if (this.parts.isNotEmpty()) { + val packageParts = JvmPackageTable.PackageParts.newBuilder() + packageParts.setPackageFqName(this.packageFqName) + packageParts.addAllClassName(this.parts.sorted()) + builder.addPackageParts(packageParts) + } + } + } +} + diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmPackageTable.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmPackageTable.java new file mode 100644 index 00000000000..5f28b1234d0 --- /dev/null +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/serialization/jvm/JvmPackageTable.java @@ -0,0 +1,1090 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: core/descriptor.loader.java/src/jvm_package_table.proto + +package org.jetbrains.kotlin.serialization.jvm; + +public final class JvmPackageTable { + private JvmPackageTable() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + public interface PackageTableOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + java.util.List + getPackagePartsList(); + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts getPackageParts(int index); + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + int getPackagePartsCount(); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageTable} + */ + public static final class PackageTable extends + com.google.protobuf.GeneratedMessageLite + implements PackageTableOrBuilder { + // Use PackageTable.newBuilder() to construct. + private PackageTable(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private PackageTable(boolean noInit) {} + + private static final PackageTable defaultInstance; + public static PackageTable getDefaultInstance() { + return defaultInstance; + } + + public PackageTable getDefaultInstanceForType() { + return defaultInstance; + } + + private PackageTable( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + packageParts_.add(input.readMessage(org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = java.util.Collections.unmodifiableList(packageParts_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PackageTable parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PackageTable(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + // repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + public static final int PACKAGE_PARTS_FIELD_NUMBER = 1; + private java.util.List packageParts_; + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List getPackagePartsList() { + return packageParts_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List + getPackagePartsOrBuilderList() { + return packageParts_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public int getPackagePartsCount() { + return packageParts_.size(); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts getPackageParts(int index) { + return packageParts_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackagePartsOrBuilder getPackagePartsOrBuilder( + int index) { + return packageParts_.get(index); + } + + private void initFields() { + packageParts_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + for (int i = 0; i < getPackagePartsCount(); i++) { + if (!getPackageParts(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + for (int i = 0; i < packageParts_.size(); i++) { + output.writeMessage(1, packageParts_.get(i)); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + for (int i = 0; i < packageParts_.size(); i++) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, packageParts_.get(i)); + } + 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.serialization.jvm.JvmPackageTable.PackageTable parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.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.serialization.jvm.JvmPackageTable.PackageTable prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageTable} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable, Builder> + implements org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTableOrBuilder { + // Construct using org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + packageParts_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable getDefaultInstanceForType() { + return org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable.getDefaultInstance(); + } + + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable build() { + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable buildPartial() { + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable result = new org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable(this); + int from_bitField0_ = bitField0_; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = java.util.Collections.unmodifiableList(packageParts_); + bitField0_ = (bitField0_ & ~0x00000001); + } + result.packageParts_ = packageParts_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable other) { + if (other == org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable.getDefaultInstance()) return this; + if (!other.packageParts_.isEmpty()) { + if (packageParts_.isEmpty()) { + packageParts_ = other.packageParts_; + bitField0_ = (bitField0_ & ~0x00000001); + } else { + ensurePackagePartsIsMutable(); + packageParts_.addAll(other.packageParts_); + } + + } + return this; + } + + public final boolean isInitialized() { + for (int i = 0; i < getPackagePartsCount(); i++) { + if (!getPackageParts(i).isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageTable) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + private java.util.List packageParts_ = + java.util.Collections.emptyList(); + private void ensurePackagePartsIsMutable() { + if (!((bitField0_ & 0x00000001) == 0x00000001)) { + packageParts_ = new java.util.ArrayList(packageParts_); + bitField0_ |= 0x00000001; + } + } + + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public java.util.List getPackagePartsList() { + return java.util.Collections.unmodifiableList(packageParts_); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public int getPackagePartsCount() { + return packageParts_.size(); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts getPackageParts(int index) { + return packageParts_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder setPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackagePartsIsMutable(); + packageParts_.set(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder setPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.Builder builderForValue) { + ensurePackagePartsIsMutable(); + packageParts_.set(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts(org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackagePartsIsMutable(); + packageParts_.add(value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePackagePartsIsMutable(); + packageParts_.add(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts( + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.Builder builderForValue) { + ensurePackagePartsIsMutable(); + packageParts_.add(builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addPackageParts( + int index, org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.Builder builderForValue) { + ensurePackagePartsIsMutable(); + packageParts_.add(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder addAllPackageParts( + java.lang.Iterable values) { + ensurePackagePartsIsMutable(); + super.addAll(values, packageParts_); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder clearPackageParts() { + packageParts_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000001); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1; + */ + public Builder removePackageParts(int index) { + ensurePackagePartsIsMutable(); + packageParts_.remove(index); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.jvm.PackageTable) + } + + static { + defaultInstance = new PackageTable(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.jvm.PackageTable) + } + + public interface PackagePartsOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required string package_fq_name = 1; + /** + * required string package_fq_name = 1; + */ + boolean hasPackageFqName(); + /** + * required string package_fq_name = 1; + */ + java.lang.String getPackageFqName(); + /** + * required string package_fq_name = 1; + */ + com.google.protobuf.ByteString + getPackageFqNameBytes(); + + // repeated string class_name = 2; + /** + * repeated string class_name = 2; + */ + java.util.List + getClassNameList(); + /** + * repeated string class_name = 2; + */ + int getClassNameCount(); + /** + * repeated string class_name = 2; + */ + java.lang.String getClassName(int index); + /** + * repeated string class_name = 2; + */ + com.google.protobuf.ByteString + getClassNameBytes(int index); + } + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageParts} + */ + public static final class PackageParts extends + com.google.protobuf.GeneratedMessageLite + implements PackagePartsOrBuilder { + // Use PackageParts.newBuilder() to construct. + private PackageParts(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private PackageParts(boolean noInit) {} + + private static final PackageParts defaultInstance; + public static PackageParts getDefaultInstance() { + return defaultInstance; + } + + public PackageParts getDefaultInstanceForType() { + return defaultInstance; + } + + private PackageParts( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + packageFqName_ = input.readBytes(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.LazyStringArrayList(); + mutable_bitField0_ |= 0x00000002; + } + className_.add(input.readBytes()); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.UnmodifiableLazyStringList(className_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PackageParts parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PackageParts(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required string package_fq_name = 1; + public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 1; + private java.lang.Object packageFqName_; + /** + * required string package_fq_name = 1; + */ + public boolean hasPackageFqName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string package_fq_name = 1; + */ + public java.lang.String getPackageFqName() { + java.lang.Object ref = packageFqName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + packageFqName_ = s; + } + return s; + } + } + /** + * required string package_fq_name = 1; + */ + public com.google.protobuf.ByteString + getPackageFqNameBytes() { + java.lang.Object ref = packageFqName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageFqName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // repeated string class_name = 2; + public static final int CLASS_NAME_FIELD_NUMBER = 2; + private com.google.protobuf.LazyStringList className_; + /** + * repeated string class_name = 2; + */ + public java.util.List + getClassNameList() { + return className_; + } + /** + * repeated string class_name = 2; + */ + public int getClassNameCount() { + return className_.size(); + } + /** + * repeated string class_name = 2; + */ + public java.lang.String getClassName(int index) { + return className_.get(index); + } + /** + * repeated string class_name = 2; + */ + public com.google.protobuf.ByteString + getClassNameBytes(int index) { + return className_.getByteString(index); + } + + private void initFields() { + packageFqName_ = ""; + className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPackageFqName()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getPackageFqNameBytes()); + } + for (int i = 0; i < className_.size(); i++) { + output.writeBytes(2, className_.getByteString(i)); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getPackageFqNameBytes()); + } + { + int dataSize = 0; + for (int i = 0; i < className_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeBytesSizeNoTag(className_.getByteString(i)); + } + size += dataSize; + size += 1 * getClassNameList().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.serialization.jvm.JvmPackageTable.PackageParts parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.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.serialization.jvm.JvmPackageTable.PackageParts prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageParts} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts, Builder> + implements org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackagePartsOrBuilder { + // Construct using org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + packageFqName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts getDefaultInstanceForType() { + return org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.getDefaultInstance(); + } + + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts build() { + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts buildPartial() { + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts result = new org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.packageFqName_ = packageFqName_; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.UnmodifiableLazyStringList( + className_); + bitField0_ = (bitField0_ & ~0x00000002); + } + result.className_ = className_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts other) { + if (other == org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts.getDefaultInstance()) return this; + if (other.hasPackageFqName()) { + bitField0_ |= 0x00000001; + packageFqName_ = other.packageFqName_; + + } + if (!other.className_.isEmpty()) { + if (className_.isEmpty()) { + className_ = other.className_; + bitField0_ = (bitField0_ & ~0x00000002); + } else { + ensureClassNameIsMutable(); + className_.addAll(other.className_); + } + + } + return this; + } + + public final boolean isInitialized() { + if (!hasPackageFqName()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (org.jetbrains.kotlin.serialization.jvm.JvmPackageTable.PackageParts) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required string package_fq_name = 1; + private java.lang.Object packageFqName_ = ""; + /** + * required string package_fq_name = 1; + */ + public boolean hasPackageFqName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string package_fq_name = 1; + */ + public java.lang.String getPackageFqName() { + java.lang.Object ref = packageFqName_; + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); + packageFqName_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * required string package_fq_name = 1; + */ + public com.google.protobuf.ByteString + getPackageFqNameBytes() { + java.lang.Object ref = packageFqName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + packageFqName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string package_fq_name = 1; + */ + public Builder setPackageFqName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + packageFqName_ = value; + + return this; + } + /** + * required string package_fq_name = 1; + */ + public Builder clearPackageFqName() { + bitField0_ = (bitField0_ & ~0x00000001); + packageFqName_ = getDefaultInstance().getPackageFqName(); + + return this; + } + /** + * required string package_fq_name = 1; + */ + public Builder setPackageFqNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + packageFqName_ = value; + + return this; + } + + // repeated string class_name = 2; + private com.google.protobuf.LazyStringList className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + private void ensureClassNameIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + className_ = new com.google.protobuf.LazyStringArrayList(className_); + bitField0_ |= 0x00000002; + } + } + /** + * repeated string class_name = 2; + */ + public java.util.List + getClassNameList() { + return java.util.Collections.unmodifiableList(className_); + } + /** + * repeated string class_name = 2; + */ + public int getClassNameCount() { + return className_.size(); + } + /** + * repeated string class_name = 2; + */ + public java.lang.String getClassName(int index) { + return className_.get(index); + } + /** + * repeated string class_name = 2; + */ + public com.google.protobuf.ByteString + getClassNameBytes(int index) { + return className_.getByteString(index); + } + /** + * repeated string class_name = 2; + */ + public Builder setClassName( + int index, java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureClassNameIsMutable(); + className_.set(index, value); + + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder addClassName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + ensureClassNameIsMutable(); + className_.add(value); + + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder addAllClassName( + java.lang.Iterable values) { + ensureClassNameIsMutable(); + super.addAll(values, className_); + + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder clearClassName() { + className_ = com.google.protobuf.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + + return this; + } + /** + * repeated string class_name = 2; + */ + public Builder addClassNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + ensureClassNameIsMutable(); + className_.add(value); + + return this; + } + + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.jvm.PackageParts) + } + + static { + defaultInstance = new PackageParts(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.jvm.PackageParts) + } + + + static { + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt index e7a8073f329..5b903542741 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt @@ -29,20 +29,19 @@ class RuntimePackagePartProvider(val classLoader : ClassLoader) : PackagePartPro if (moduleName == null) return module2Mapping.putIfAbsent(moduleName, lazy { - val resourceAsStream: InputStream = classLoader.getResourceAsStream("META-INF/$moduleName.kotlin_module") ?: return@lazy ModuleMapping("") + val resourceAsStream: InputStream = classLoader.getResourceAsStream("META-INF/$moduleName.kotlin_module") ?: return@lazy ModuleMapping() try { - val bytes = resourceAsStream.readBytes() - return@lazy ModuleMapping(String(bytes, "UTF-8")) + return@lazy ModuleMapping(resourceAsStream.readBytes()) } catch (e: Exception) { - return@lazy ModuleMapping("") + return@lazy ModuleMapping() } }) } - override fun findPackageParts(packageInternalName: String): List { - return module2Mapping.values().map { it.value.findPackageParts(packageInternalName) }.filterNotNull().flatMap { it.parts }.distinct() + override fun findPackageParts(packageFqName: String): List { + return module2Mapping.values().map { it.value.findPackageParts(packageFqName) }.filterNotNull().flatMap { it.parts }.distinct() } } \ No newline at end of file diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackagePartProvider.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackagePartProvider.kt index 6f48618d51b..9742f1a887a 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackagePartProvider.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/PackagePartProvider.kt @@ -18,11 +18,14 @@ package org.jetbrains.kotlin.descriptors interface PackagePartProvider { - fun findPackageParts(packageInternalName: String): List + /** + * return packagepart simple names + */ + fun findPackageParts(packageFqName: String): List companion object { val EMPTY = object : PackagePartProvider { - override fun findPackageParts(packageInternalName: String): List { + override fun findPackageParts(packageFqName: String): List { return emptyList() } } diff --git a/generators/src/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt b/generators/src/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt index e588b29d520..d41b85badc8 100644 --- a/generators/src/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt +++ b/generators/src/org/jetbrains/kotlin/generators/protobuf/GenerateProtoBuf.kt @@ -50,7 +50,8 @@ public val PROTO_PATHS: List = listOf( ProtoPath("core/deserialization/src/descriptors.proto"), ProtoPath("core/deserialization/src/builtins.proto"), ProtoPath("js/js.serializer/src/js.proto"), - ProtoPath("core/descriptor.loader.java/src/jvm_descriptors.proto") + ProtoPath("core/descriptor.loader.java/src/jvm_descriptors.proto"), + ProtoPath("core/descriptor.loader.java/src/jvm_package_table.proto") ) private val EXT_OPTIONS_PROTO_PATH = ProtoPath("core/deserialization/src/ext_options.proto") diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEPackagePartProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEPackagePartProvider.kt index 85392acdc39..377771636b7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEPackagePartProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEPackagePartProvider.kt @@ -24,8 +24,8 @@ import org.jetbrains.kotlin.load.kotlin.PackageParts public class IDEPackagePartProvider(val scope: GlobalSearchScope) : PackagePartProvider { - override fun findPackageParts(packageInternalName: String): List { - val values: MutableList = FileBasedIndex.getInstance().getValues(KotlinModuleMappingIndex.KEY, packageInternalName, scope) + override fun findPackageParts(packageFqName: String): List { + val values: MutableList = FileBasedIndex.getInstance().getValues(KotlinModuleMappingIndex.KEY, packageFqName, scope) return values.flatMap { it.parts }.distinct() } } \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt index 576ec0fb65f..9e62c4f3ef9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt @@ -25,18 +25,6 @@ import org.jetbrains.kotlin.load.kotlin.PackageParts import java.io.DataInput import java.io.DataOutput -class PackageData(val data: List) { - - override fun equals(other: Any?): Boolean { - return super.equals(other) - } - - override fun hashCode(): Int { - return data.size() + (data.firstOrNull()?.hashCode() ?: 0) - } -} - - public object KotlinModuleMappingIndex : FileBasedIndexExtension() { private val classOfIndex = javaClass().getCanonicalName() @@ -55,8 +43,8 @@ public object KotlinModuleMappingIndex : FileBasedIndexExtension { override fun read(`in`: DataInput): PackageParts? { - val internalName = `in`.readUTF() - val facades = PackageParts(internalName) + val packageFqName = `in`.readUTF() + val facades = PackageParts(packageFqName) val size = `in`.readInt() (1..size).forEach { facades.parts.add(`in`.readUTF()) @@ -66,7 +54,7 @@ public object KotlinModuleMappingIndex : FileBasedIndexExtension { return object : DataIndexer { override fun map(inputData: FileContent): MutableMap { - val content = String(inputData.getContent()) + val content = inputData.getContent() val moduleMapping = ModuleMapping(content) - return moduleMapping.package2Parts + return moduleMapping.packageFqName2Parts } } } diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index bad1dacf6fa..485831953c8 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -247,6 +247,7 @@ + diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinModuleFileFactory.java b/idea/src/org/jetbrains/kotlin/idea/KotlinModuleFileFactory.java new file mode 100644 index 00000000000..f0eac11a4dd --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinModuleFileFactory.java @@ -0,0 +1,29 @@ +/* + * 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.idea; + +import com.intellij.openapi.fileTypes.FileTypeConsumer; +import com.intellij.openapi.fileTypes.FileTypeFactory; +import org.jetbrains.annotations.NotNull; + + +public class KotlinModuleFileFactory extends FileTypeFactory { + @Override + public void createFileTypes(@NotNull FileTypeConsumer consumer) { + consumer.consume(KotlinModuleFileType.INSTANCE, "kotlin_module"); + } +}