diff --git a/build-common/test/org/jetbrains/kotlin/serialization/jvm/DebugJvmModuleProtoBuf.java b/build-common/test/org/jetbrains/kotlin/serialization/jvm/DebugJvmModuleProtoBuf.java index a2fef2ceb47..60381394b4d 100644 --- a/build-common/test/org/jetbrains/kotlin/serialization/jvm/DebugJvmModuleProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/serialization/jvm/DebugJvmModuleProtoBuf.java @@ -138,6 +138,76 @@ public final class DebugJvmModuleProtoBuf { */ org.jetbrains.kotlin.protobuf.ByteString getJvmPackageNameBytes(int index); + + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + boolean hasStringTable(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable getStringTable(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder getStringTableOrBuilder(); + + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + boolean hasQualifiedNameTable(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable getQualifiedNameTable(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder getQualifiedNameTableOrBuilder(); + + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + java.util.List + getAnnotationList(); + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation getAnnotation(int index); + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + int getAnnotationCount(); + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + java.util.List + getAnnotationOrBuilderList(); + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( + int index); } /** * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.Module} @@ -216,6 +286,40 @@ public final class DebugJvmModuleProtoBuf { jvmPackageName_.add(bs); break; } + case 34: { + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = stringTable_.toBuilder(); + } + stringTable_ = input.readMessage(org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stringTable_); + stringTable_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 42: { + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = qualifiedNameTable_.toBuilder(); + } + qualifiedNameTable_ = input.readMessage(org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(qualifiedNameTable_); + qualifiedNameTable_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 50: { + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000020; + } + annotation_.add(input.readMessage(org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.PARSER, extensionRegistry)); + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -233,6 +337,9 @@ public final class DebugJvmModuleProtoBuf { if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { jvmPackageName_ = jvmPackageName_.getUnmodifiableView(); } + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -264,6 +371,7 @@ public final class DebugJvmModuleProtoBuf { return PARSER; } + private int bitField0_; public static final int PACKAGE_PARTS_FIELD_NUMBER = 1; private java.util.List packageParts_; /** @@ -423,10 +531,110 @@ public final class DebugJvmModuleProtoBuf { return jvmPackageName_.getByteString(index); } + public static final int STRING_TABLE_FIELD_NUMBER = 4; + private org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable stringTable_; + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public boolean hasStringTable() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable getStringTable() { + return stringTable_; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder getStringTableOrBuilder() { + return stringTable_; + } + + public static final int QUALIFIED_NAME_TABLE_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable qualifiedNameTable_; + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public boolean hasQualifiedNameTable() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable getQualifiedNameTable() { + return qualifiedNameTable_; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder getQualifiedNameTableOrBuilder() { + return qualifiedNameTable_; + } + + public static final int ANNOTATION_FIELD_NUMBER = 6; + private java.util.List annotation_; + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public java.util.List getAnnotationList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public java.util.List + getAnnotationOrBuilderList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( + int index) { + return annotation_.get(index); + } + private void initFields() { packageParts_ = java.util.Collections.emptyList(); metadataParts_ = java.util.Collections.emptyList(); jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + stringTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + qualifiedNameTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + annotation_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -446,6 +654,18 @@ public final class DebugJvmModuleProtoBuf { return false; } } + if (hasQualifiedNameTable()) { + if (!getQualifiedNameTable().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -462,6 +682,15 @@ public final class DebugJvmModuleProtoBuf { for (int i = 0; i < jvmPackageName_.size(); i++) { output.writeBytes(3, jvmPackageName_.getByteString(i)); } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(4, stringTable_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(5, qualifiedNameTable_); + } + for (int i = 0; i < annotation_.size(); i++) { + output.writeMessage(6, annotation_.get(i)); + } getUnknownFields().writeTo(output); } @@ -488,6 +717,18 @@ public final class DebugJvmModuleProtoBuf { size += dataSize; size += 1 * getJvmPackageNameList().size(); } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(4, stringTable_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, qualifiedNameTable_); + } + for (int i = 0; i < annotation_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(6, annotation_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -599,6 +840,9 @@ public final class DebugJvmModuleProtoBuf { if (org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { getPackagePartsFieldBuilder(); getMetadataPartsFieldBuilder(); + getStringTableFieldBuilder(); + getQualifiedNameTableFieldBuilder(); + getAnnotationFieldBuilder(); } } private static Builder create() { @@ -621,6 +865,24 @@ public final class DebugJvmModuleProtoBuf { } jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000004); + if (stringTableBuilder_ == null) { + stringTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + } else { + stringTableBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + if (qualifiedNameTableBuilder_ == null) { + qualifiedNameTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + } else { + qualifiedNameTableBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + if (annotationBuilder_ == null) { + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + } else { + annotationBuilder_.clear(); + } return this; } @@ -648,6 +910,7 @@ public final class DebugJvmModuleProtoBuf { public org.jetbrains.kotlin.serialization.jvm.DebugJvmModuleProtoBuf.Module buildPartial() { org.jetbrains.kotlin.serialization.jvm.DebugJvmModuleProtoBuf.Module result = new org.jetbrains.kotlin.serialization.jvm.DebugJvmModuleProtoBuf.Module(this); int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (packagePartsBuilder_ == null) { if (((bitField0_ & 0x00000001) == 0x00000001)) { packageParts_ = java.util.Collections.unmodifiableList(packageParts_); @@ -671,6 +934,32 @@ public final class DebugJvmModuleProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); } result.jvmPackageName_ = jvmPackageName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000001; + } + if (stringTableBuilder_ == null) { + result.stringTable_ = stringTable_; + } else { + result.stringTable_ = stringTableBuilder_.build(); + } + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000002; + } + if (qualifiedNameTableBuilder_ == null) { + result.qualifiedNameTable_ = qualifiedNameTable_; + } else { + result.qualifiedNameTable_ = qualifiedNameTableBuilder_.build(); + } + if (annotationBuilder_ == null) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.annotation_ = annotation_; + } else { + result.annotation_ = annotationBuilder_.build(); + } + result.bitField0_ = to_bitField0_; onBuilt(); return result; } @@ -748,6 +1037,38 @@ public final class DebugJvmModuleProtoBuf { } onChanged(); } + if (other.hasStringTable()) { + mergeStringTable(other.getStringTable()); + } + if (other.hasQualifiedNameTable()) { + mergeQualifiedNameTable(other.getQualifiedNameTable()); + } + if (annotationBuilder_ == null) { + if (!other.annotation_.isEmpty()) { + if (annotation_.isEmpty()) { + annotation_ = other.annotation_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureAnnotationIsMutable(); + annotation_.addAll(other.annotation_); + } + onChanged(); + } + } else { + if (!other.annotation_.isEmpty()) { + if (annotationBuilder_.isEmpty()) { + annotationBuilder_.dispose(); + annotationBuilder_ = null; + annotation_ = other.annotation_; + bitField0_ = (bitField0_ & ~0x00000020); + annotationBuilder_ = + org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? + getAnnotationFieldBuilder() : null; + } else { + annotationBuilder_.addAllMessages(other.annotation_); + } + } + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -765,6 +1086,18 @@ public final class DebugJvmModuleProtoBuf { return false; } } + if (hasQualifiedNameTable()) { + if (!getQualifiedNameTable().isInitialized()) { + + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + + return false; + } + } return true; } @@ -1549,6 +1882,550 @@ public final class DebugJvmModuleProtoBuf { return this; } + private org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable stringTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + private org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable, org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder> stringTableBuilder_; + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public boolean hasStringTable() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable getStringTable() { + if (stringTableBuilder_ == null) { + return stringTable_; + } else { + return stringTableBuilder_.getMessage(); + } + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder setStringTable(org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable value) { + if (stringTableBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + stringTable_ = value; + onChanged(); + } else { + stringTableBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder setStringTable( + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder builderForValue) { + if (stringTableBuilder_ == null) { + stringTable_ = builderForValue.build(); + onChanged(); + } else { + stringTableBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder mergeStringTable(org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable value) { + if (stringTableBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + stringTable_ != org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance()) { + stringTable_ = + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.newBuilder(stringTable_).mergeFrom(value).buildPartial(); + } else { + stringTable_ = value; + } + onChanged(); + } else { + stringTableBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder clearStringTable() { + if (stringTableBuilder_ == null) { + stringTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + onChanged(); + } else { + stringTableBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder getStringTableBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getStringTableFieldBuilder().getBuilder(); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder getStringTableOrBuilder() { + if (stringTableBuilder_ != null) { + return stringTableBuilder_.getMessageOrBuilder(); + } else { + return stringTable_; + } + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + private org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable, org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder> + getStringTableFieldBuilder() { + if (stringTableBuilder_ == null) { + stringTableBuilder_ = new org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable, org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder>( + getStringTable(), + getParentForChildren(), + isClean()); + stringTable_ = null; + } + return stringTableBuilder_; + } + + private org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable qualifiedNameTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + private org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable, org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder> qualifiedNameTableBuilder_; + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public boolean hasQualifiedNameTable() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable getQualifiedNameTable() { + if (qualifiedNameTableBuilder_ == null) { + return qualifiedNameTable_; + } else { + return qualifiedNameTableBuilder_.getMessage(); + } + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder setQualifiedNameTable(org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable value) { + if (qualifiedNameTableBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + qualifiedNameTable_ = value; + onChanged(); + } else { + qualifiedNameTableBuilder_.setMessage(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder setQualifiedNameTable( + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder builderForValue) { + if (qualifiedNameTableBuilder_ == null) { + qualifiedNameTable_ = builderForValue.build(); + onChanged(); + } else { + qualifiedNameTableBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder mergeQualifiedNameTable(org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable value) { + if (qualifiedNameTableBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + qualifiedNameTable_ != org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance()) { + qualifiedNameTable_ = + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.newBuilder(qualifiedNameTable_).mergeFrom(value).buildPartial(); + } else { + qualifiedNameTable_ = value; + } + onChanged(); + } else { + qualifiedNameTableBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder clearQualifiedNameTable() { + if (qualifiedNameTableBuilder_ == null) { + qualifiedNameTable_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + onChanged(); + } else { + qualifiedNameTableBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder getQualifiedNameTableBuilder() { + bitField0_ |= 0x00000010; + onChanged(); + return getQualifiedNameTableFieldBuilder().getBuilder(); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder getQualifiedNameTableOrBuilder() { + if (qualifiedNameTableBuilder_ != null) { + return qualifiedNameTableBuilder_.getMessageOrBuilder(); + } else { + return qualifiedNameTable_; + } + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + private org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable, org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder> + getQualifiedNameTableFieldBuilder() { + if (qualifiedNameTableBuilder_ == null) { + qualifiedNameTableBuilder_ = new org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable, org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder>( + getQualifiedNameTable(), + getParentForChildren(), + isClean()); + qualifiedNameTable_ = null; + } + return qualifiedNameTableBuilder_; + } + + private java.util.List annotation_ = + java.util.Collections.emptyList(); + private void ensureAnnotationIsMutable() { + if (!((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(annotation_); + bitField0_ |= 0x00000020; + } + } + + private org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.AnnotationOrBuilder> annotationBuilder_; + + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public java.util.List getAnnotationList() { + if (annotationBuilder_ == null) { + return java.util.Collections.unmodifiableList(annotation_); + } else { + return annotationBuilder_.getMessageList(); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public int getAnnotationCount() { + if (annotationBuilder_ == null) { + return annotation_.size(); + } else { + return annotationBuilder_.getCount(); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation getAnnotation(int index) { + if (annotationBuilder_ == null) { + return annotation_.get(index); + } else { + return annotationBuilder_.getMessage(index); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation value) { + if (annotationBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.set(index, value); + onChanged(); + } else { + annotationBuilder_.setMessage(index, value); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder builderForValue) { + if (annotationBuilder_ == null) { + ensureAnnotationIsMutable(); + annotation_.set(index, builderForValue.build()); + onChanged(); + } else { + annotationBuilder_.setMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation(org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation value) { + if (annotationBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(value); + onChanged(); + } else { + annotationBuilder_.addMessage(value); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation value) { + if (annotationBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(index, value); + onChanged(); + } else { + annotationBuilder_.addMessage(index, value); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder builderForValue) { + if (annotationBuilder_ == null) { + ensureAnnotationIsMutable(); + annotation_.add(builderForValue.build()); + onChanged(); + } else { + annotationBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder builderForValue) { + if (annotationBuilder_ == null) { + ensureAnnotationIsMutable(); + annotation_.add(index, builderForValue.build()); + onChanged(); + } else { + annotationBuilder_.addMessage(index, builderForValue.build()); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAllAnnotation( + java.lang.Iterable values) { + if (annotationBuilder_ == null) { + ensureAnnotationIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, annotation_); + onChanged(); + } else { + annotationBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder clearAnnotation() { + if (annotationBuilder_ == null) { + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + onChanged(); + } else { + annotationBuilder_.clear(); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder removeAnnotation(int index) { + if (annotationBuilder_ == null) { + ensureAnnotationIsMutable(); + annotation_.remove(index); + onChanged(); + } else { + annotationBuilder_.remove(index); + } + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder getAnnotationBuilder( + int index) { + return getAnnotationFieldBuilder().getBuilder(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( + int index) { + if (annotationBuilder_ == null) { + return annotation_.get(index); } else { + return annotationBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public java.util.List + getAnnotationOrBuilderList() { + if (annotationBuilder_ != null) { + return annotationBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(annotation_); + } + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder addAnnotationBuilder() { + return getAnnotationFieldBuilder().addBuilder( + org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance()); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder addAnnotationBuilder( + int index) { + return getAnnotationFieldBuilder().addBuilder( + index, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance()); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public java.util.List + getAnnotationBuilderList() { + return getAnnotationFieldBuilder().getBuilderList(); + } + private org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.AnnotationOrBuilder> + getAnnotationFieldBuilder() { + if (annotationBuilder_ == null) { + annotationBuilder_ = new org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder< + org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation, org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.Builder, org.jetbrains.kotlin.serialization.DebugProtoBuf.AnnotationOrBuilder>( + annotation_, + ((bitField0_ & 0x00000020) == 0x00000020), + getParentForChildren(), + isClean()); + annotation_ = null; + } + return annotationBuilder_; + } + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.jvm.Module) } @@ -3381,18 +4258,25 @@ public final class DebugJvmModuleProtoBuf { java.lang.String[] descriptorData = { "\n/core/descriptors.jvm/src/jvm_module.de" + "bug.proto\022&org.jetbrains.kotlin.serializ" + - "ation.jvm\"\275\001\n\006Module\022K\n\rpackage_parts\030\001 " + - "\003(\01324.org.jetbrains.kotlin.serialization" + - ".jvm.PackageParts\022L\n\016metadata_parts\030\002 \003(" + - "\01324.org.jetbrains.kotlin.serialization.j" + - "vm.PackageParts\022\030\n\020jvm_package_name\030\003 \003(" + - "\t\"\366\001\n\014PackageParts\022\027\n\017package_fq_name\030\001 " + - "\002(\t\022\030\n\020short_class_name\030\002 \003(\t\022*\n\036multifi" + - "le_facade_short_name_id\030\003 \003(\005B\002\020\001\022#\n\033mul", - "tifile_facade_short_name\030\004 \003(\t\022.\n&class_" + - "with_jvm_package_name_short_name\030\005 \003(\t\0222" + - "\n&class_with_jvm_package_name_package_id" + - "\030\006 \003(\005B\002\020\001B\030B\026DebugJvmModuleProtoBuf" + "ation.jvm\0320core/deserialization/src/desc" + + "riptors.debug.proto\"\236\003\n\006Module\022K\n\rpackag" + + "e_parts\030\001 \003(\01324.org.jetbrains.kotlin.ser" + + "ialization.jvm.PackageParts\022L\n\016metadata_" + + "parts\030\002 \003(\01324.org.jetbrains.kotlin.seria" + + "lization.jvm.PackageParts\022\030\n\020jvm_package" + + "_name\030\003 \003(\t\022E\n\014string_table\030\004 \001(\0132/.org." + + "jetbrains.kotlin.serialization.StringTab", + "le\022T\n\024qualified_name_table\030\005 \001(\01326.org.j" + + "etbrains.kotlin.serialization.QualifiedN" + + "ameTable\022B\n\nannotation\030\006 \003(\0132..org.jetbr" + + "ains.kotlin.serialization.Annotation\"\366\001\n" + + "\014PackageParts\022\027\n\017package_fq_name\030\001 \002(\t\022\030" + + "\n\020short_class_name\030\002 \003(\t\022*\n\036multifile_fa" + + "cade_short_name_id\030\003 \003(\005B\002\020\001\022#\n\033multifil" + + "e_facade_short_name\030\004 \003(\t\022.\n&class_with_" + + "jvm_package_name_short_name\030\005 \003(\t\0222\n&cla" + + "ss_with_jvm_package_name_package_id\030\006 \003(", + "\005B\002\020\001B\030B\026DebugJvmModuleProtoBuf" }; org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -3405,19 +4289,21 @@ public final class DebugJvmModuleProtoBuf { org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor[] { + org.jetbrains.kotlin.serialization.DebugProtoBuf.getDescriptor(), }, assigner); internal_static_org_jetbrains_kotlin_serialization_jvm_Module_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_org_jetbrains_kotlin_serialization_jvm_Module_fieldAccessorTable = new org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_jetbrains_kotlin_serialization_jvm_Module_descriptor, - new java.lang.String[] { "PackageParts", "MetadataParts", "JvmPackageName", }); + new java.lang.String[] { "PackageParts", "MetadataParts", "JvmPackageName", "StringTable", "QualifiedNameTable", "Annotation", }); internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable = new org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor, new java.lang.String[] { "PackageFqName", "ShortClassName", "MultifileFacadeShortNameId", "MultifileFacadeShortName", "ClassWithJvmPackageNameShortName", "ClassWithJvmPackageNamePackageId", }); + org.jetbrains.kotlin.serialization.DebugProtoBuf.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java index c7d246e81a7..f8ddc1a70b7 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassFileFactory.java @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.codegen; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; +import kotlin.Pair; import kotlin.collections.CollectionsKt; import kotlin.io.FilesKt; import org.jetbrains.annotations.NotNull; @@ -26,13 +27,22 @@ 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.config.AnalysisFlag; +import org.jetbrains.kotlin.descriptors.ClassDescriptor; +import org.jetbrains.kotlin.descriptors.DescriptorUtilKt; +import org.jetbrains.kotlin.descriptors.ModuleDescriptor; +import org.jetbrains.kotlin.incremental.components.NoLookupLocation; import org.jetbrains.kotlin.load.kotlin.ModuleMapping; import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils; import org.jetbrains.kotlin.load.kotlin.PackageParts; +import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration; +import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt; import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOrigin; +import org.jetbrains.kotlin.serialization.ProtoBuf; +import org.jetbrains.kotlin.serialization.StringTableImpl; import org.jetbrains.kotlin.serialization.jvm.JvmModuleProtoBuf; import org.jetbrains.org.objectweb.asm.Type; @@ -102,12 +112,18 @@ public class ClassFileFactory implements OutputFileCollection { part.addTo(builder); } - if (builder.getPackagePartsCount() == 0) return; + List experimental = state.getLanguageVersionSettings().getFlag(AnalysisFlag.getExperimental()); + if (!experimental.isEmpty()) { + writeExperimentalMarkers(state.getModule(), builder, experimental); + } + + JvmModuleProtoBuf.Module moduleProto = builder.build(); + if (moduleProto.getSerializedSize() == 0) return; generators.put(outputFilePath, new OutAndSourceFileList(CollectionsKt.toList(packagePartSourceFiles)) { @Override public byte[] asBytes(ClassBuilderFactory factory) { - return ClassFileUtilsKt.serializeToByteArray(builder); + return ClassFileUtilsKt.serializeToByteArray(moduleProto); } @Override @@ -122,6 +138,29 @@ public class ClassFileFactory implements OutputFileCollection { }); } + private static void writeExperimentalMarkers( + @NotNull ModuleDescriptor module, + @NotNull JvmModuleProtoBuf.Module.Builder builder, + @NotNull List experimental + ) { + StringTableImpl stringTable = new StringTableImpl(); + for (String fqName : experimental) { + ClassDescriptor descriptor = + DescriptorUtilKt.resolveClassByFqName(module, new FqName(fqName), NoLookupLocation.FOR_ALREADY_TRACKED); + if (descriptor != null) { + ProtoBuf.Annotation.Builder annotation = ProtoBuf.Annotation.newBuilder(); + ClassId classId = DescriptorUtilsKt.getClassId(descriptor); + if (classId != null) { + annotation.setId(stringTable.getClassIdIndex(classId)); + builder.addAnnotation(annotation); + } + } + } + Pair tables = stringTable.buildProto(); + builder.setStringTable(tables.getFirst()); + builder.setQualifiedNameTable(tables.getSecond()); + } + @NotNull @Override public List asList() { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt index e64d4fef3bb..7816ce6c7ee 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt @@ -57,7 +57,7 @@ private fun Iterable.addCompiledParts(state: GenerationState): Lis } } -fun JvmModuleProtoBuf.Module.Builder.serializeToByteArray(): ByteArray { +fun JvmModuleProtoBuf.Module.serializeToByteArray(): ByteArray { val moduleMapping = ByteArrayOutputStream(4096) val out = DataOutputStream(moduleMapping) val version = JvmMetadataVersion.INSTANCE.toArray() @@ -65,7 +65,7 @@ fun JvmModuleProtoBuf.Module.Builder.serializeToByteArray(): ByteArray { for (number in version) { out.writeInt(number) } - build().writeTo(out) + writeTo(out) out.flush() return moduleMapping.toByteArray() } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt index ed9a0b5c4b5..9279d21525a 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/metadata/MetadataSerializer.kt @@ -125,7 +125,7 @@ open class MetadataSerializer(private val dependOnOldBuiltIns: Boolean) { for (table in packageTable.values) { table.addTo(this) } - }.serializeToByteArray() + }.build().serializeToByteArray() kotlinModuleFile.parentFile.mkdirs() kotlinModuleFile.writeBytes(packageTableBytes) diff --git a/compiler/testData/moduleProtoBuf/experimental/main.kt b/compiler/testData/moduleProtoBuf/experimental/main.kt new file mode 100644 index 00000000000..286b6b564bb --- /dev/null +++ b/compiler/testData/moduleProtoBuf/experimental/main.kt @@ -0,0 +1,12 @@ +package org.foo + +@Experimental +annotation class A + +class B { + @Experimental + annotation class C +} + +@Experimental(Experimental.Level.ERROR, [Experimental.Impact.COMPILATION]) +annotation class D diff --git a/compiler/testData/moduleProtoBuf/experimental/module-proto.txt b/compiler/testData/moduleProtoBuf/experimental/module-proto.txt new file mode 100644 index 00000000000..2a98714105e --- /dev/null +++ b/compiler/testData/moduleProtoBuf/experimental/module-proto.txt @@ -0,0 +1,2 @@ +@org/foo/A +@org/foo/B.C diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/JvmModuleProtoBufTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/JvmModuleProtoBufTest.kt index d1bbcb821d9..a1593d6ed6e 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/JvmModuleProtoBufTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/JvmModuleProtoBufTest.kt @@ -31,7 +31,8 @@ class JvmModuleProtoBufTest : KtUsefulTestCase() { private fun doTest( relativeDirectory: String, compileWith: LanguageVersion = LanguageVersion.LATEST_STABLE, - loadWith: LanguageVersion = LanguageVersion.LATEST_STABLE + loadWith: LanguageVersion = LanguageVersion.LATEST_STABLE, + extraOptions: List = emptyList() ) { val directory = KotlinTestUtils.getTestDataPathBase() + relativeDirectory val tmpdir = KotlinTestUtils.tmpDir(this::class.simpleName) @@ -42,7 +43,7 @@ class JvmModuleProtoBufTest : KtUsefulTestCase() { "-d", tmpdir.path, "-module-name", moduleName, "-language-version", compileWith.versionString - )) + ) + extraOptions) val mapping = ModuleMapping.create( File(tmpdir, "META-INF/$moduleName.${ModuleMapping.MAPPING_FILE_EXT}").readBytes(), "test", @@ -51,6 +52,9 @@ class JvmModuleProtoBufTest : KtUsefulTestCase() { ) ) val result = buildString { + for (annotationClassId in mapping.moduleData.annotations) { + appendln("@${annotationClassId.asString()}") + } for ((fqName, packageParts) in mapping.packageFqName2Parts) { appendln(fqName) for (part in packageParts.parts) { @@ -88,4 +92,17 @@ class JvmModuleProtoBufTest : KtUsefulTestCase() { doTest("/moduleProtoBuf/jvmPackageNameLanguageVersion11", compileWith = LanguageVersion.KOTLIN_1_2, loadWith = LanguageVersion.KOTLIN_1_1) } + + fun testExperimental() { + doTest( + "/moduleProtoBuf/experimental", extraOptions = listOf( + "-Xskip-runtime-version-check", + "-language-version", + "1.3", + "-Xexperimental=org.foo.A", + "-Xexperimental=org.foo.B.C", + "-Xuse-experimental=org.foo.D" + ) + ) + } } diff --git a/core/descriptors.jvm/src/jvm_module.proto b/core/descriptors.jvm/src/jvm_module.proto index ecdc9aed2b7..01bd458b5d3 100644 --- a/core/descriptors.jvm/src/jvm_module.proto +++ b/core/descriptors.jvm/src/jvm_module.proto @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.serialization.jvm; +import "core/deserialization/src/descriptors.proto"; + option java_outer_classname = "JvmModuleProtoBuf"; option optimize_for = LITE_RUNTIME; @@ -29,6 +31,13 @@ message Module { // Values of @JvmPackageName annotation used in this module; can be referenced in PackageParts#class_with_jvm_package_name_package_id. // The names here are dot-separated, e.g. "org.foo.bar" repeated string jvm_package_name = 3; + + optional StringTable string_table = 4; + + optional QualifiedNameTable qualified_name_table = 5; + + // Annotations on the whole module + repeated Annotation annotation = 6; } message PackageParts { diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/BinaryModuleData.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/BinaryModuleData.kt new file mode 100644 index 00000000000..0a0c479dbd5 --- /dev/null +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/BinaryModuleData.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.load.kotlin + +import org.jetbrains.kotlin.name.ClassId + +class BinaryModuleData(val annotations: List) diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt index e988ca9c040..f9b78da21d8 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt @@ -20,14 +20,16 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration +import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl import org.jetbrains.kotlin.serialization.jvm.JvmModuleProtoBuf import java.io.ByteArrayInputStream import java.io.DataInputStream import java.io.IOException class ModuleMapping private constructor( - val packageFqName2Parts: Map, - private val debugName: String + val packageFqName2Parts: Map, + val moduleData: BinaryModuleData, + private val debugName: String ) { fun findPackageParts(packageFqName: String): PackageParts? { return packageFqName2Parts[packageFqName] @@ -40,10 +42,10 @@ class ModuleMapping private constructor( val MAPPING_FILE_EXT: String = "kotlin_module" @JvmField - val EMPTY: ModuleMapping = ModuleMapping(emptyMap(), "EMPTY") + val EMPTY: ModuleMapping = ModuleMapping(emptyMap(), BinaryModuleData(emptyList()), "EMPTY") @JvmField - val CORRUPTED: ModuleMapping = ModuleMapping(emptyMap(), "CORRUPTED") + val CORRUPTED: ModuleMapping = ModuleMapping(emptyMap(), BinaryModuleData(emptyList()), "CORRUPTED") fun create( bytes: ByteArray?, @@ -96,9 +98,12 @@ class ModuleMapping private constructor( proto.shortClassNameList.forEach(packageParts::addMetadataPart) } - return ModuleMapping(result, debugName) - } - else { + // TODO: read arguments of module annotations + val nameResolver = NameResolverImpl(moduleProto.stringTable, moduleProto.qualifiedNameTable) + val annotations = moduleProto.annotationList.map { proto -> nameResolver.getClassId(proto.id) } + + return ModuleMapping(result, BinaryModuleData(annotations), debugName) + } else { // TODO: consider reporting "incompatible ABI version" error for package parts } diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/serialization/jvm/JvmModuleProtoBuf.java b/core/descriptors.jvm/src/org/jetbrains/kotlin/serialization/jvm/JvmModuleProtoBuf.java index 741772d5173..686d0323bf1 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/serialization/jvm/JvmModuleProtoBuf.java +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/serialization/jvm/JvmModuleProtoBuf.java @@ -102,6 +102,50 @@ public final class JvmModuleProtoBuf { */ org.jetbrains.kotlin.protobuf.ByteString getJvmPackageNameBytes(int index); + + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + boolean hasStringTable(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getStringTable(); + + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + boolean hasQualifiedNameTable(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getQualifiedNameTable(); + + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + java.util.List + getAnnotationList(); + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getAnnotation(int index); + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + int getAnnotationCount(); } /** * Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.Module} @@ -178,6 +222,40 @@ public final class JvmModuleProtoBuf { jvmPackageName_.add(bs); break; } + case 34: { + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = stringTable_.toBuilder(); + } + stringTable_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(stringTable_); + stringTable_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 42: { + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = qualifiedNameTable_.toBuilder(); + } + qualifiedNameTable_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(qualifiedNameTable_); + qualifiedNameTable_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 50: { + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000020; + } + annotation_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.PARSER, extensionRegistry)); + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -195,6 +273,9 @@ public final class JvmModuleProtoBuf { if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { jvmPackageName_ = jvmPackageName_.getUnmodifiableView(); } + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + } try { unknownFieldsCodedOutput.flush(); } catch (java.io.IOException e) { @@ -220,6 +301,7 @@ public final class JvmModuleProtoBuf { return PARSER; } + private int bitField0_; public static final int PACKAGE_PARTS_FIELD_NUMBER = 1; private java.util.List packageParts_; /** @@ -379,10 +461,98 @@ public final class JvmModuleProtoBuf { return jvmPackageName_.getByteString(index); } + public static final int STRING_TABLE_FIELD_NUMBER = 4; + private org.jetbrains.kotlin.serialization.ProtoBuf.StringTable stringTable_; + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public boolean hasStringTable() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getStringTable() { + return stringTable_; + } + + public static final int QUALIFIED_NAME_TABLE_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable qualifiedNameTable_; + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public boolean hasQualifiedNameTable() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getQualifiedNameTable() { + return qualifiedNameTable_; + } + + public static final int ANNOTATION_FIELD_NUMBER = 6; + private java.util.List annotation_; + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public java.util.List getAnnotationList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public java.util.List + getAnnotationOrBuilderList() { + return annotation_; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+     * Annotations on the whole module
+     * 
+ */ + public org.jetbrains.kotlin.serialization.ProtoBuf.AnnotationOrBuilder getAnnotationOrBuilder( + int index) { + return annotation_.get(index); + } + private void initFields() { packageParts_ = java.util.Collections.emptyList(); metadataParts_ = java.util.Collections.emptyList(); jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; + stringTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + qualifiedNameTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + annotation_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -402,6 +572,18 @@ public final class JvmModuleProtoBuf { return false; } } + if (hasQualifiedNameTable()) { + if (!getQualifiedNameTable().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -418,6 +600,15 @@ public final class JvmModuleProtoBuf { for (int i = 0; i < jvmPackageName_.size(); i++) { output.writeBytes(3, jvmPackageName_.getByteString(i)); } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(4, stringTable_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeMessage(5, qualifiedNameTable_); + } + for (int i = 0; i < annotation_.size(); i++) { + output.writeMessage(6, annotation_.get(i)); + } output.writeRawBytes(unknownFields); } @@ -444,6 +635,18 @@ public final class JvmModuleProtoBuf { size += dataSize; size += 1 * getJvmPackageNameList().size(); } + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(4, stringTable_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, qualifiedNameTable_); + } + for (int i = 0; i < annotation_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(6, annotation_.get(i)); + } size += unknownFields.size(); memoizedSerializedSize = size; return size; @@ -544,6 +747,12 @@ public final class JvmModuleProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); jvmPackageName_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY; bitField0_ = (bitField0_ & ~0x00000004); + stringTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000008); + qualifiedNameTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000010); + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -566,6 +775,7 @@ public final class JvmModuleProtoBuf { public org.jetbrains.kotlin.serialization.jvm.JvmModuleProtoBuf.Module buildPartial() { org.jetbrains.kotlin.serialization.jvm.JvmModuleProtoBuf.Module result = new org.jetbrains.kotlin.serialization.jvm.JvmModuleProtoBuf.Module(this); int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { packageParts_ = java.util.Collections.unmodifiableList(packageParts_); bitField0_ = (bitField0_ & ~0x00000001); @@ -581,6 +791,20 @@ public final class JvmModuleProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); } result.jvmPackageName_ = jvmPackageName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000001; + } + result.stringTable_ = stringTable_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000002; + } + result.qualifiedNameTable_ = qualifiedNameTable_; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.annotation_ = annotation_; + result.bitField0_ = to_bitField0_; return result; } @@ -615,6 +839,22 @@ public final class JvmModuleProtoBuf { jvmPackageName_.addAll(other.jvmPackageName_); } + } + if (other.hasStringTable()) { + mergeStringTable(other.getStringTable()); + } + if (other.hasQualifiedNameTable()) { + mergeQualifiedNameTable(other.getQualifiedNameTable()); + } + if (!other.annotation_.isEmpty()) { + if (annotation_.isEmpty()) { + annotation_ = other.annotation_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureAnnotationIsMutable(); + annotation_.addAll(other.annotation_); + } + } setUnknownFields( getUnknownFields().concat(other.unknownFields)); @@ -634,6 +874,18 @@ public final class JvmModuleProtoBuf { return false; } } + if (hasQualifiedNameTable()) { + if (!getQualifiedNameTable().isInitialized()) { + + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + + return false; + } + } return true; } @@ -1140,6 +1392,299 @@ public final class JvmModuleProtoBuf { return this; } + private org.jetbrains.kotlin.serialization.ProtoBuf.StringTable stringTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public boolean hasStringTable() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getStringTable() { + return stringTable_; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder setStringTable(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable value) { + if (value == null) { + throw new NullPointerException(); + } + stringTable_ = value; + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder setStringTable( + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.Builder builderForValue) { + stringTable_ = builderForValue.build(); + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder mergeStringTable(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable value) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + stringTable_ != org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance()) { + stringTable_ = + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.newBuilder(stringTable_).mergeFrom(value).buildPartial(); + } else { + stringTable_ = value; + } + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable string_table = 4; + */ + public Builder clearStringTable() { + stringTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + private org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable qualifiedNameTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public boolean hasQualifiedNameTable() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getQualifiedNameTable() { + return qualifiedNameTable_; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder setQualifiedNameTable(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable value) { + if (value == null) { + throw new NullPointerException(); + } + qualifiedNameTable_ = value; + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder setQualifiedNameTable( + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.Builder builderForValue) { + qualifiedNameTable_ = builderForValue.build(); + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder mergeQualifiedNameTable(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable value) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + qualifiedNameTable_ != org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance()) { + qualifiedNameTable_ = + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.newBuilder(qualifiedNameTable_).mergeFrom(value).buildPartial(); + } else { + qualifiedNameTable_ = value; + } + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_name_table = 5; + */ + public Builder clearQualifiedNameTable() { + qualifiedNameTable_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + + private java.util.List annotation_ = + java.util.Collections.emptyList(); + private void ensureAnnotationIsMutable() { + if (!((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(annotation_); + bitField0_ |= 0x00000020; + } + } + + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public java.util.List getAnnotationList() { + return java.util.Collections.unmodifiableList(annotation_); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public int getAnnotationCount() { + return annotation_.size(); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public org.jetbrains.kotlin.serialization.ProtoBuf.Annotation getAnnotation(int index) { + return annotation_.get(index); + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.set(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder setAnnotation( + int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.set(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation value) { + if (value == null) { + throw new NullPointerException(); + } + ensureAnnotationIsMutable(); + annotation_.add(index, value); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.add(builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAnnotation( + int index, org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Builder builderForValue) { + ensureAnnotationIsMutable(); + annotation_.add(index, builderForValue.build()); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder addAllAnnotation( + java.lang.Iterable values) { + ensureAnnotationIsMutable(); + org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll( + values, annotation_); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder clearAnnotation() { + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + + return this; + } + /** + * repeated .org.jetbrains.kotlin.serialization.Annotation annotation = 6; + * + *
+       * Annotations on the whole module
+       * 
+ */ + public Builder removeAnnotation(int index) { + ensureAnnotationIsMutable(); + annotation_.remove(index); + + return this; + } + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.serialization.jvm.Module) }