From 396a5ab3528d153b48eb7f0cf31003265d24b36f Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 23 Jan 2018 15:37:00 +0100 Subject: [PATCH] JS: write/read module annotation FQ names to/from metadata #KT-22759 In Progress --- .../serialization/js/DebugJsProtoBuf.java | 987 +++++++++++++++++- js/js.serializer/src/js.proto | 7 + .../kotlin/serialization/js/JsProtoBuf.java | 542 ++++++++++ .../js/KotlinJavascriptPackageFragment.kt | 15 +- .../js/KotlinJavascriptSerializationUtil.kt | 25 +- .../kotlin/js/facade/K2JSTranslator.java | 2 +- 6 files changed, 1515 insertions(+), 63 deletions(-) diff --git a/build-common/test/org/jetbrains/kotlin/serialization/js/DebugJsProtoBuf.java b/build-common/test/org/jetbrains/kotlin/serialization/js/DebugJsProtoBuf.java index 43bbee4d092..1a13dd857d8 100644 --- a/build-common/test/org/jetbrains/kotlin/serialization/js/DebugJsProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/serialization/js/DebugJsProtoBuf.java @@ -73,6 +73,76 @@ public final class DebugJsProtoBuf { */ org.jetbrains.kotlin.protobuf.ByteString getPackageFqNameBytes(); + + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + boolean hasStrings(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable getStrings(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder getStringsOrBuilder(); + + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + boolean hasQualifiedNames(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable getQualifiedNames(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder getQualifiedNamesOrBuilder(); + + /** + * 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.js.Header} @@ -142,6 +212,40 @@ public final class DebugJsProtoBuf { packageFqName_ = bs; break; } + case 34: { + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = strings_.toBuilder(); + } + strings_ = input.readMessage(org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(strings_); + strings_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + case 42: { + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = qualifiedNames_.toBuilder(); + } + qualifiedNames_ = input.readMessage(org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(qualifiedNames_); + qualifiedNames_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } + case 50: { + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000020; + } + annotation_.add(input.readMessage(org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.PARSER, extensionRegistry)); + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -150,6 +254,9 @@ public final class DebugJsProtoBuf { throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( e.getMessage()).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + } this.unknownFields = unknownFields.build(); makeExtensionsImmutable(); } @@ -270,10 +377,110 @@ public final class DebugJsProtoBuf { } } + public static final int STRINGS_FIELD_NUMBER = 4; + private org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable strings_; + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public boolean hasStrings() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable getStrings() { + return strings_; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder getStringsOrBuilder() { + return strings_; + } + + public static final int QUALIFIED_NAMES_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable qualifiedNames_; + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public boolean hasQualifiedNames() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable getQualifiedNames() { + return qualifiedNames_; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder getQualifiedNamesOrBuilder() { + return qualifiedNames_; + } + + 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() { flags_ = 0; jsCodeBinaryVersion_ = 1; packageFqName_ = ""; + strings_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + qualifiedNames_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + annotation_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -281,6 +488,18 @@ public final class DebugJsProtoBuf { if (isInitialized == 1) return true; if (isInitialized == 0) return false; + if (hasQualifiedNames()) { + if (!getQualifiedNames().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -297,6 +516,15 @@ public final class DebugJsProtoBuf { if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeBytes(3, getPackageFqNameBytes()); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(4, strings_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, qualifiedNames_); + } + for (int i = 0; i < annotation_.size(); i++) { + output.writeMessage(6, annotation_.get(i)); + } getUnknownFields().writeTo(output); } @@ -318,6 +546,18 @@ public final class DebugJsProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeBytesSize(3, getPackageFqNameBytes()); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(4, strings_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, qualifiedNames_); + } + for (int i = 0; i < annotation_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(6, annotation_.get(i)); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -427,6 +667,9 @@ public final class DebugJsProtoBuf { } private void maybeForceBuilderInitialization() { if (org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { + getStringsFieldBuilder(); + getQualifiedNamesFieldBuilder(); + getAnnotationFieldBuilder(); } } private static Builder create() { @@ -441,6 +684,24 @@ public final class DebugJsProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); packageFqName_ = ""; bitField0_ = (bitField0_ & ~0x00000004); + if (stringsBuilder_ == null) { + strings_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + } else { + stringsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + if (qualifiedNamesBuilder_ == null) { + qualifiedNames_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + } else { + qualifiedNamesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + if (annotationBuilder_ == null) { + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); + } else { + annotationBuilder_.clear(); + } return this; } @@ -481,6 +742,31 @@ public final class DebugJsProtoBuf { to_bitField0_ |= 0x00000004; } result.packageFqName_ = packageFqName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + if (stringsBuilder_ == null) { + result.strings_ = strings_; + } else { + result.strings_ = stringsBuilder_.build(); + } + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + if (qualifiedNamesBuilder_ == null) { + result.qualifiedNames_ = qualifiedNames_; + } else { + result.qualifiedNames_ = qualifiedNamesBuilder_.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; @@ -508,11 +794,55 @@ public final class DebugJsProtoBuf { packageFqName_ = other.packageFqName_; onChanged(); } + if (other.hasStrings()) { + mergeStrings(other.getStrings()); + } + if (other.hasQualifiedNames()) { + mergeQualifiedNames(other.getQualifiedNames()); + } + 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; } public final boolean isInitialized() { + if (hasQualifiedNames()) { + if (!getQualifiedNames().isInitialized()) { + + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + + return false; + } + } return true; } @@ -707,6 +1037,550 @@ public final class DebugJsProtoBuf { return this; } + private org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable strings_ = 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> stringsBuilder_; + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public boolean hasStrings() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable getStrings() { + if (stringsBuilder_ == null) { + return strings_; + } else { + return stringsBuilder_.getMessage(); + } + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder setStrings(org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable value) { + if (stringsBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + strings_ = value; + onChanged(); + } else { + stringsBuilder_.setMessage(value); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder setStrings( + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder builderForValue) { + if (stringsBuilder_ == null) { + strings_ = builderForValue.build(); + onChanged(); + } else { + stringsBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder mergeStrings(org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable value) { + if (stringsBuilder_ == null) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + strings_ != org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance()) { + strings_ = + org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.newBuilder(strings_).mergeFrom(value).buildPartial(); + } else { + strings_ = value; + } + onChanged(); + } else { + stringsBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder clearStrings() { + if (stringsBuilder_ == null) { + strings_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.getDefaultInstance(); + onChanged(); + } else { + stringsBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTable.Builder getStringsBuilder() { + bitField0_ |= 0x00000008; + onChanged(); + return getStringsFieldBuilder().getBuilder(); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.StringTableOrBuilder getStringsOrBuilder() { + if (stringsBuilder_ != null) { + return stringsBuilder_.getMessageOrBuilder(); + } else { + return strings_; + } + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 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> + getStringsFieldBuilder() { + if (stringsBuilder_ == null) { + stringsBuilder_ = 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>( + getStrings(), + getParentForChildren(), + isClean()); + strings_ = null; + } + return stringsBuilder_; + } + + private org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable qualifiedNames_ = 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> qualifiedNamesBuilder_; + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public boolean hasQualifiedNames() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable getQualifiedNames() { + if (qualifiedNamesBuilder_ == null) { + return qualifiedNames_; + } else { + return qualifiedNamesBuilder_.getMessage(); + } + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder setQualifiedNames(org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable value) { + if (qualifiedNamesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + qualifiedNames_ = value; + onChanged(); + } else { + qualifiedNamesBuilder_.setMessage(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder setQualifiedNames( + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder builderForValue) { + if (qualifiedNamesBuilder_ == null) { + qualifiedNames_ = builderForValue.build(); + onChanged(); + } else { + qualifiedNamesBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder mergeQualifiedNames(org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable value) { + if (qualifiedNamesBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + qualifiedNames_ != org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance()) { + qualifiedNames_ = + org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.newBuilder(qualifiedNames_).mergeFrom(value).buildPartial(); + } else { + qualifiedNames_ = value; + } + onChanged(); + } else { + qualifiedNamesBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder clearQualifiedNames() { + if (qualifiedNamesBuilder_ == null) { + qualifiedNames_ = org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.getDefaultInstance(); + onChanged(); + } else { + qualifiedNamesBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTable.Builder getQualifiedNamesBuilder() { + bitField0_ |= 0x00000010; + onChanged(); + return getQualifiedNamesFieldBuilder().getBuilder(); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.DebugProtoBuf.QualifiedNameTableOrBuilder getQualifiedNamesOrBuilder() { + if (qualifiedNamesBuilder_ != null) { + return qualifiedNamesBuilder_.getMessageOrBuilder(); + } else { + return qualifiedNames_; + } + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 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> + getQualifiedNamesFieldBuilder() { + if (qualifiedNamesBuilder_ == null) { + qualifiedNamesBuilder_ = 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>( + getQualifiedNames(), + getParentForChildren(), + isClean()); + qualifiedNames_ = null; + } + return qualifiedNamesBuilder_; + } + + 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.js.Header) } @@ -3992,60 +4866,65 @@ public final class DebugJsProtoBuf { "\n#js/js.serializer/src/js.debug.proto\022%o" + "rg.jetbrains.kotlin.serialization.js\0320co" + "re/deserialization/src/descriptors.debug" + - ".proto\"S\n\006Header\022\r\n\005flags\030\001 \001(\005\022!\n\026js_co" + - "de_binary_version\030\002 \001(\005:\0011\022\027\n\017package_fq" + - "_name\030\003 \001(\t\"V\n\004File\022\n\n\002id\030\001 \001(\005\022B\n\nannot" + - "ation\030\002 \003(\0132..org.jetbrains.kotlin.seria" + - "lization.Annotation\"B\n\005Files\0229\n\004file\030\001 \003" + - "(\0132+.org.jetbrains.kotlin.serialization." + - "js.File\"!\n\007Classes\022\026\n\nclass_name\030\001 \003(\005B\002", - "\020\001\"\357\001\n\007Library\022H\n\004kind\030\001 \001(\01623.org.jetbr" + - "ains.kotlin.serialization.js.Library.Kin" + - "d:\005PLAIN\022M\n\020package_fragment\030\002 \003(\01323.org" + - ".jetbrains.kotlin.serialization.PackageF" + - "ragment\022\027\n\017imported_module\030\003 \003(\t\"2\n\004Kind" + - "\022\t\n\005PLAIN\020\001\022\007\n\003AMD\020\002\022\r\n\tCOMMON_JS\020\003\022\007\n\003U" + - "MD\020\004:E\n\017package_fq_name\022+.org.jetbrains." + - "kotlin.serialization.Package\030\203\001 \001(\005:t\n\020c" + - "lass_annotation\022).org.jetbrains.kotlin.s" + - "erialization.Class\030\202\001 \003(\0132..org.jetbrain", - "s.kotlin.serialization.Annotation:L\n\030cla" + - "ss_containing_file_id\022).org.jetbrains.ko" + - "tlin.serialization.Class\030\207\001 \001(\005:\200\001\n\026cons" + - "tructor_annotation\022/.org.jetbrains.kotli" + - "n.serialization.Constructor\030\202\001 \003(\0132..org" + - ".jetbrains.kotlin.serialization.Annotati" + - "on:z\n\023function_annotation\022,.org.jetbrain" + - "s.kotlin.serialization.Function\030\202\001 \003(\0132." + - ".org.jetbrains.kotlin.serialization.Anno" + - "tation:R\n\033function_containing_file_id\022,.", - "org.jetbrains.kotlin.serialization.Funct" + - "ion\030\207\001 \001(\005:z\n\023property_annotation\022,.org." + - "jetbrains.kotlin.serialization.Property\030" + - "\202\001 \003(\0132..org.jetbrains.kotlin.serializat" + - "ion.Annotation:\210\001\n\022compile_time_value\022,." + - "org.jetbrains.kotlin.serialization.Prope" + - "rty\030\203\001 \001(\0132=.org.jetbrains.kotlin.serial" + - "ization.Annotation.Argument.Value:R\n\033pro" + - "perty_containing_file_id\022,.org.jetbrains" + - ".kotlin.serialization.Property\030\207\001 \001(\005:}\n", - "\025enum_entry_annotation\022-.org.jetbrains.k" + - "otlin.serialization.EnumEntry\030\202\001 \003(\0132..o" + + ".proto\"\252\002\n\006Header\022\r\n\005flags\030\001 \001(\005\022!\n\026js_c" + + "ode_binary_version\030\002 \001(\005:\0011\022\027\n\017package_f" + + "q_name\030\003 \001(\t\022@\n\007strings\030\004 \001(\0132/.org.jetb" + + "rains.kotlin.serialization.StringTable\022O" + + "\n\017qualified_names\030\005 \001(\01326.org.jetbrains." + + "kotlin.serialization.QualifiedNameTable\022" + + "B\n\nannotation\030\006 \003(\0132..org.jetbrains.kotl", + "in.serialization.Annotation\"V\n\004File\022\n\n\002i" + + "d\030\001 \001(\005\022B\n\nannotation\030\002 \003(\0132..org.jetbra" + + "ins.kotlin.serialization.Annotation\"B\n\005F" + + "iles\0229\n\004file\030\001 \003(\0132+.org.jetbrains.kotli" + + "n.serialization.js.File\"!\n\007Classes\022\026\n\ncl" + + "ass_name\030\001 \003(\005B\002\020\001\"\357\001\n\007Library\022H\n\004kind\030\001" + + " \001(\01623.org.jetbrains.kotlin.serializatio" + + "n.js.Library.Kind:\005PLAIN\022M\n\020package_frag" + + "ment\030\002 \003(\01323.org.jetbrains.kotlin.serial" + + "ization.PackageFragment\022\027\n\017imported_modu", + "le\030\003 \003(\t\"2\n\004Kind\022\t\n\005PLAIN\020\001\022\007\n\003AMD\020\002\022\r\n\t" + + "COMMON_JS\020\003\022\007\n\003UMD\020\004:E\n\017package_fq_name\022" + + "+.org.jetbrains.kotlin.serialization.Pac" + + "kage\030\203\001 \001(\005:t\n\020class_annotation\022).org.je" + + "tbrains.kotlin.serialization.Class\030\202\001 \003(" + + "\0132..org.jetbrains.kotlin.serialization.A" + + "nnotation:L\n\030class_containing_file_id\022)." + + "org.jetbrains.kotlin.serialization.Class" + + "\030\207\001 \001(\005:\200\001\n\026constructor_annotation\022/.org" + + ".jetbrains.kotlin.serialization.Construc", + "tor\030\202\001 \003(\0132..org.jetbrains.kotlin.serial" + + "ization.Annotation:z\n\023function_annotatio" + + "n\022,.org.jetbrains.kotlin.serialization.F" + + "unction\030\202\001 \003(\0132..org.jetbrains.kotlin.se" + + "rialization.Annotation:R\n\033function_conta" + + "ining_file_id\022,.org.jetbrains.kotlin.ser" + + "ialization.Function\030\207\001 \001(\005:z\n\023property_a" + + "nnotation\022,.org.jetbrains.kotlin.seriali" + + "zation.Property\030\202\001 \003(\0132..org.jetbrains.k" + + "otlin.serialization.Annotation:\210\001\n\022compi", + "le_time_value\022,.org.jetbrains.kotlin.ser" + + "ialization.Property\030\203\001 \001(\0132=.org.jetbrai" + + "ns.kotlin.serialization.Annotation.Argum" + + "ent.Value:R\n\033property_containing_file_id" + + "\022,.org.jetbrains.kotlin.serialization.Pr" + + "operty\030\207\001 \001(\005:}\n\025enum_entry_annotation\022-" + + ".org.jetbrains.kotlin.serialization.Enum" + + "Entry\030\202\001 \003(\0132..org.jetbrains.kotlin.seri" + + "alization.Annotation:\201\001\n\024parameter_annot" + + "ation\0222.org.jetbrains.kotlin.serializati", + "on.ValueParameter\030\202\001 \003(\0132..org.jetbrains" + + ".kotlin.serialization.Annotation:r\n\017type" + + "_annotation\022(.org.jetbrains.kotlin.seria" + + "lization.Type\030\202\001 \003(\0132..org.jetbrains.kot" + + "lin.serialization.Annotation:\205\001\n\031type_pa" + + "rameter_annotation\0221.org.jetbrains.kotli" + + "n.serialization.TypeParameter\030\202\001 \003(\0132..o" + "rg.jetbrains.kotlin.serialization.Annota" + - "tion:\201\001\n\024parameter_annotation\0222.org.jetb" + - "rains.kotlin.serialization.ValueParamete" + - "r\030\202\001 \003(\0132..org.jetbrains.kotlin.serializ" + - "ation.Annotation:r\n\017type_annotation\022(.or" + - "g.jetbrains.kotlin.serialization.Type\030\202\001" + - " \003(\0132..org.jetbrains.kotlin.serializatio" + - "n.Annotation:\205\001\n\031type_parameter_annotati", - "on\0221.org.jetbrains.kotlin.serialization." + - "TypeParameter\030\202\001 \003(\0132..org.jetbrains.kot" + - "lin.serialization.Annotation:\202\001\n\026package" + - "_fragment_files\0223.org.jetbrains.kotlin.s" + - "erialization.PackageFragment\030\202\001 \001(\0132,.or" + - "g.jetbrains.kotlin.serialization.js.File" + - "sB\021B\017DebugJsProtoBuf" + "tion:\202\001\n\026package_fragment_files\0223.org.je" + + "tbrains.kotlin.serialization.PackageFrag", + "ment\030\202\001 \001(\0132,.org.jetbrains.kotlin.seria" + + "lization.js.FilesB\021B\017DebugJsProtoBuf" }; org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() { @@ -4065,7 +4944,7 @@ public final class DebugJsProtoBuf { internal_static_org_jetbrains_kotlin_serialization_js_Header_fieldAccessorTable = new org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_jetbrains_kotlin_serialization_js_Header_descriptor, - new java.lang.String[] { "Flags", "JsCodeBinaryVersion", "PackageFqName", }); + new java.lang.String[] { "Flags", "JsCodeBinaryVersion", "PackageFqName", "Strings", "QualifiedNames", "Annotation", }); internal_static_org_jetbrains_kotlin_serialization_js_File_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_org_jetbrains_kotlin_serialization_js_File_fieldAccessorTable = new diff --git a/js/js.serializer/src/js.proto b/js/js.serializer/src/js.proto index 7f378ef7383..3dd2d64ef6b 100644 --- a/js/js.serializer/src/js.proto +++ b/js/js.serializer/src/js.proto @@ -31,6 +31,13 @@ message Header { optional int32 js_code_binary_version = 2 [default = 1]; optional string package_fq_name = 3; + + optional StringTable strings = 4; + + optional QualifiedNameTable qualified_names = 5; + + // Annotations on the whole module + repeated Annotation annotation = 6; } message File { diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/JsProtoBuf.java b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/JsProtoBuf.java index 4cab4f47854..ba7401933e1 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/JsProtoBuf.java +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/JsProtoBuf.java @@ -73,6 +73,50 @@ public final class JsProtoBuf { */ org.jetbrains.kotlin.protobuf.ByteString getPackageFqNameBytes(); + + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + boolean hasStrings(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getStrings(); + + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + boolean hasQualifiedNames(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getQualifiedNames(); + + /** + * 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.js.Header} @@ -140,6 +184,40 @@ public final class JsProtoBuf { packageFqName_ = bs; break; } + case 34: { + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = strings_.toBuilder(); + } + strings_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(strings_); + strings_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + case 42: { + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = qualifiedNames_.toBuilder(); + } + qualifiedNames_ = input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(qualifiedNames_); + qualifiedNames_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } + case 50: { + if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000020; + } + annotation_.add(input.readMessage(org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.PARSER, extensionRegistry)); + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -148,6 +226,9 @@ public final class JsProtoBuf { throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException( e.getMessage()).setUnfinishedMessage(this); } finally { + if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + } try { unknownFieldsCodedOutput.flush(); } catch (java.io.IOException e) { @@ -262,10 +343,98 @@ public final class JsProtoBuf { } } + public static final int STRINGS_FIELD_NUMBER = 4; + private org.jetbrains.kotlin.serialization.ProtoBuf.StringTable strings_; + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public boolean hasStrings() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getStrings() { + return strings_; + } + + public static final int QUALIFIED_NAMES_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable qualifiedNames_; + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public boolean hasQualifiedNames() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getQualifiedNames() { + return qualifiedNames_; + } + + 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() { flags_ = 0; jsCodeBinaryVersion_ = 1; packageFqName_ = ""; + strings_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + qualifiedNames_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + annotation_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -273,6 +442,18 @@ public final class JsProtoBuf { if (isInitialized == 1) return true; if (isInitialized == 0) return false; + if (hasQualifiedNames()) { + if (!getQualifiedNames().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } memoizedIsInitialized = 1; return true; } @@ -289,6 +470,15 @@ public final class JsProtoBuf { if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeBytes(3, getPackageFqNameBytes()); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeMessage(4, strings_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, qualifiedNames_); + } + for (int i = 0; i < annotation_.size(); i++) { + output.writeMessage(6, annotation_.get(i)); + } output.writeRawBytes(unknownFields); } @@ -310,6 +500,18 @@ public final class JsProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeBytesSize(3, getPackageFqNameBytes()); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(4, strings_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, qualifiedNames_); + } + for (int i = 0; i < annotation_.size(); i++) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(6, annotation_.get(i)); + } size += unknownFields.size(); memoizedSerializedSize = size; return size; @@ -410,6 +612,12 @@ public final class JsProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); packageFqName_ = ""; bitField0_ = (bitField0_ & ~0x00000004); + strings_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000008); + qualifiedNames_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000010); + annotation_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -445,6 +653,19 @@ public final class JsProtoBuf { to_bitField0_ |= 0x00000004; } result.packageFqName_ = packageFqName_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.strings_ = strings_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.qualifiedNames_ = qualifiedNames_; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + annotation_ = java.util.Collections.unmodifiableList(annotation_); + bitField0_ = (bitField0_ & ~0x00000020); + } + result.annotation_ = annotation_; result.bitField0_ = to_bitField0_; return result; } @@ -461,6 +682,22 @@ public final class JsProtoBuf { bitField0_ |= 0x00000004; packageFqName_ = other.packageFqName_; + } + if (other.hasStrings()) { + mergeStrings(other.getStrings()); + } + if (other.hasQualifiedNames()) { + mergeQualifiedNames(other.getQualifiedNames()); + } + if (!other.annotation_.isEmpty()) { + if (annotation_.isEmpty()) { + annotation_ = other.annotation_; + bitField0_ = (bitField0_ & ~0x00000020); + } else { + ensureAnnotationIsMutable(); + annotation_.addAll(other.annotation_); + } + } setUnknownFields( getUnknownFields().concat(other.unknownFields)); @@ -468,6 +705,18 @@ public final class JsProtoBuf { } public final boolean isInitialized() { + if (hasQualifiedNames()) { + if (!getQualifiedNames().isInitialized()) { + + return false; + } + } + for (int i = 0; i < getAnnotationCount(); i++) { + if (!getAnnotation(i).isInitialized()) { + + return false; + } + } return true; } @@ -662,6 +911,299 @@ public final class JsProtoBuf { return this; } + private org.jetbrains.kotlin.serialization.ProtoBuf.StringTable strings_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public boolean hasStrings() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.StringTable getStrings() { + return strings_; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder setStrings(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable value) { + if (value == null) { + throw new NullPointerException(); + } + strings_ = value; + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder setStrings( + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.Builder builderForValue) { + strings_ = builderForValue.build(); + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder mergeStrings(org.jetbrains.kotlin.serialization.ProtoBuf.StringTable value) { + if (((bitField0_ & 0x00000008) == 0x00000008) && + strings_ != org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance()) { + strings_ = + org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.newBuilder(strings_).mergeFrom(value).buildPartial(); + } else { + strings_ = value; + } + + bitField0_ |= 0x00000008; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.StringTable strings = 4; + */ + public Builder clearStrings() { + strings_ = org.jetbrains.kotlin.serialization.ProtoBuf.StringTable.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + private org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable qualifiedNames_ = org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public boolean hasQualifiedNames() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable getQualifiedNames() { + return qualifiedNames_; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder setQualifiedNames(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable value) { + if (value == null) { + throw new NullPointerException(); + } + qualifiedNames_ = value; + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder setQualifiedNames( + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.Builder builderForValue) { + qualifiedNames_ = builderForValue.build(); + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder mergeQualifiedNames(org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable value) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + qualifiedNames_ != org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.getDefaultInstance()) { + qualifiedNames_ = + org.jetbrains.kotlin.serialization.ProtoBuf.QualifiedNameTable.newBuilder(qualifiedNames_).mergeFrom(value).buildPartial(); + } else { + qualifiedNames_ = value; + } + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.serialization.QualifiedNameTable qualified_names = 5; + */ + public Builder clearQualifiedNames() { + qualifiedNames_ = 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.js.Header) } diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt index 42473978658..de563aec59c 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt @@ -21,13 +21,11 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.SourceFile import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor +import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.serialization.ProtoBuf -import org.jetbrains.kotlin.serialization.deserialization.AnnotationDeserializer -import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration -import org.jetbrains.kotlin.serialization.deserialization.DeserializedPackageFragmentImpl -import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData +import org.jetbrains.kotlin.serialization.deserialization.* import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.getValue @@ -65,11 +63,18 @@ class KotlinJavascriptPackageFragment( } } - private class JsContainerSource( + class JsContainerSource( private val fqName: FqName, header: JsProtoBuf.Header, configuration: DeserializationConfiguration ) : DeserializedContainerSource { + val annotations: List = + if (header.annotationCount == 0) emptyList() + else NameResolverImpl(header.strings, header.qualifiedNames).let { nameResolver -> + // TODO: read arguments of module annotations + header.annotationList.map { annotation -> nameResolver.getClassId(annotation.id) } + } + // TODO override fun getContainingFile(): SourceFile = SourceFile.NO_SOURCE_FILE diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt index c8a4c9622c3..0b969698d5d 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt @@ -16,10 +16,12 @@ package org.jetbrains.kotlin.serialization.js +import org.jetbrains.kotlin.config.AnalysisFlag import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.isPreRelease import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.protobuf.CodedInputStream import org.jetbrains.kotlin.resolve.BindingContext @@ -29,6 +31,7 @@ import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.serialization.AnnotationSerializer import org.jetbrains.kotlin.serialization.DescriptorSerializer import org.jetbrains.kotlin.serialization.ProtoBuf +import org.jetbrains.kotlin.serialization.StringTableImpl import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor @@ -224,7 +227,7 @@ object KotlinJavascriptSerializationUtil { version.forEach(this::writeInt) } - serializeHeader(fqName, languageVersionSettings).writeDelimitedTo(stream) + serializeHeader(module, fqName, languageVersionSettings).writeDelimitedTo(stream) part.writeTo(stream) contentMap[JsSerializerProtocol.getKjsmFilePath(fqName)] = stream.toByteArray() @@ -236,7 +239,9 @@ object KotlinJavascriptSerializationUtil { private fun ProtoBuf.PackageFragment.isEmpty(): Boolean = class_Count == 0 && `package`.let { it.functionCount == 0 && it.propertyCount == 0 && it.typeAliasCount == 0 } - fun serializeHeader(packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings): JsProtoBuf.Header { + fun serializeHeader( + module: ModuleDescriptor, packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings + ): JsProtoBuf.Header { val header = JsProtoBuf.Header.newBuilder() if (packageFqName != null) { @@ -247,6 +252,20 @@ object KotlinJavascriptSerializationUtil { header.flags = 1 } + val experimentalAnnotationFqNames = languageVersionSettings.getFlag(AnalysisFlag.experimental) + if (experimentalAnnotationFqNames.isNotEmpty()) { + val stringTable = StringTableImpl() + for (fqName in experimentalAnnotationFqNames) { + val descriptor = module.resolveClassByFqName(FqName(fqName), NoLookupLocation.FOR_ALREADY_TRACKED) ?: continue + header.addAnnotation(ProtoBuf.Annotation.newBuilder().apply { + id = stringTable.getFqNameIndex(descriptor) + }) + } + val (strings, qualifiedNames) = stringTable.buildProto() + header.strings = strings + header.qualifiedNames = qualifiedNames + } + // TODO: write JS code binary version return header.build() @@ -278,7 +297,7 @@ object KotlinJavascriptSerializationUtil { ): ByteArray { return ByteArrayOutputStream().apply { GZIPOutputStream(this).use { stream -> - serializeHeader(null, languageVersionSettings).writeDelimitedTo(stream) + serializeHeader(data, null, languageVersionSettings).writeDelimitedTo(stream) serializeMetadata(bindingContext, data, kind, imported).writeTo(stream) } }.toByteArray() diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java b/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java index 8e71ccdb35f..93e41e67651 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java +++ b/js/js.translator/src/org/jetbrains/kotlin/js/facade/K2JSTranslator.java @@ -184,7 +184,7 @@ public final class K2JSTranslator { } LanguageVersionSettings settings = CommonConfigurationKeysKt.getLanguageVersionSettings(config.getConfiguration()); - incrementalResults.processHeader(serializationUtil.serializeHeader(null, settings).toByteArray()); + incrementalResults.processHeader(serializationUtil.serializeHeader(moduleDescriptor, null, settings).toByteArray()); } RemoveDuplicateImportsKt.removeDuplicateImports(translationResult.getProgram());