JS: do not require "id" in the File protobuf message

This commit is contained in:
Alexander Udalov
2017-01-30 11:49:20 +03:00
parent 88b82d5fa2
commit 933bcb3511
5 changed files with 91 additions and 37 deletions
@@ -722,11 +722,19 @@ public final class DebugJsProtoBuf {
org.jetbrains.kotlin.protobuf.MessageOrBuilder { org.jetbrains.kotlin.protobuf.MessageOrBuilder {
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
boolean hasId(); boolean hasId();
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
int getId(); int getId();
@@ -865,13 +873,21 @@ public final class DebugJsProtoBuf {
public static final int ID_FIELD_NUMBER = 1; public static final int ID_FIELD_NUMBER = 1;
private int id_; private int id_;
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public boolean hasId() { public boolean hasId() {
return ((bitField0_ & 0x00000001) == 0x00000001); return ((bitField0_ & 0x00000001) == 0x00000001);
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public int getId() { public int getId() {
return id_; return id_;
@@ -922,10 +938,6 @@ public final class DebugJsProtoBuf {
if (isInitialized == 1) return true; if (isInitialized == 1) return true;
if (isInitialized == 0) return false; if (isInitialized == 0) return false;
if (!hasId()) {
memoizedIsInitialized = 0;
return false;
}
for (int i = 0; i < getAnnotationCount(); i++) { for (int i = 0; i < getAnnotationCount(); i++) {
if (!getAnnotation(i).isInitialized()) { if (!getAnnotation(i).isInitialized()) {
memoizedIsInitialized = 0; memoizedIsInitialized = 0;
@@ -1179,10 +1191,6 @@ public final class DebugJsProtoBuf {
} }
public final boolean isInitialized() { public final boolean isInitialized() {
if (!hasId()) {
return false;
}
for (int i = 0; i < getAnnotationCount(); i++) { for (int i = 0; i < getAnnotationCount(); i++) {
if (!getAnnotation(i).isInitialized()) { if (!getAnnotation(i).isInitialized()) {
@@ -1213,19 +1221,31 @@ public final class DebugJsProtoBuf {
private int id_ ; private int id_ ;
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public boolean hasId() { public boolean hasId() {
return ((bitField0_ & 0x00000001) == 0x00000001); return ((bitField0_ & 0x00000001) == 0x00000001);
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public int getId() { public int getId() {
return id_; return id_;
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public Builder setId(int value) { public Builder setId(int value) {
bitField0_ |= 0x00000001; bitField0_ |= 0x00000001;
@@ -1234,7 +1254,11 @@ public final class DebugJsProtoBuf {
return this; return this;
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public Builder clearId() { public Builder clearId() {
bitField0_ = (bitField0_ & ~0x00000001); bitField0_ = (bitField0_ & ~0x00000001);
@@ -5456,7 +5480,7 @@ public final class DebugJsProtoBuf {
"re/deserialization/src/descriptors.debug" + "re/deserialization/src/descriptors.debug" +
".proto\"P\n\006Header\022\r\n\005flags\030\001 \001(\005\022\036\n\026js_co" + ".proto\"P\n\006Header\022\r\n\005flags\030\001 \001(\005\022\036\n\026js_co" +
"de_binary_version\030\002 \001(\005\022\027\n\017package_fq_na" + "de_binary_version\030\002 \001(\005\022\027\n\017package_fq_na" +
"me\030\003 \001(\t\"V\n\004File\022\n\n\002id\030\001 \002(\005\022B\n\nannotati" + "me\030\003 \001(\t\"V\n\004File\022\n\n\002id\030\001 \001(\005\022B\n\nannotati" +
"on\030\002 \003(\0132..org.jetbrains.kotlin.serializ" + "on\030\002 \003(\0132..org.jetbrains.kotlin.serializ" +
"ation.Annotation\"B\n\005Files\0229\n\004file\030\001 \003(\0132" + "ation.Annotation\"B\n\005Files\0229\n\004file\030\001 \003(\0132" +
"+.org.jetbrains.kotlin.serialization.js." + "+.org.jetbrains.kotlin.serialization.js." +
+3 -1
View File
@@ -34,7 +34,9 @@ message Header {
} }
message File { message File {
required int32 id = 1; // If absent, id is the index of the file in the Files.file list
optional int32 id = 1;
repeated Annotation annotation = 2; repeated Annotation annotation = 2;
} }
@@ -677,11 +677,19 @@ public final class JsProtoBuf {
org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder { org.jetbrains.kotlin.protobuf.MessageLiteOrBuilder {
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
boolean hasId(); boolean hasId();
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
int getId(); int getId();
@@ -802,13 +810,21 @@ public final class JsProtoBuf {
public static final int ID_FIELD_NUMBER = 1; public static final int ID_FIELD_NUMBER = 1;
private int id_; private int id_;
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public boolean hasId() { public boolean hasId() {
return ((bitField0_ & 0x00000001) == 0x00000001); return ((bitField0_ & 0x00000001) == 0x00000001);
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public int getId() { public int getId() {
return id_; return id_;
@@ -859,10 +875,6 @@ public final class JsProtoBuf {
if (isInitialized == 1) return true; if (isInitialized == 1) return true;
if (isInitialized == 0) return false; if (isInitialized == 0) return false;
if (!hasId()) {
memoizedIsInitialized = 0;
return false;
}
for (int i = 0; i < getAnnotationCount(); i++) { for (int i = 0; i < getAnnotationCount(); i++) {
if (!getAnnotation(i).isInitialized()) { if (!getAnnotation(i).isInitialized()) {
memoizedIsInitialized = 0; memoizedIsInitialized = 0;
@@ -1054,10 +1066,6 @@ public final class JsProtoBuf {
} }
public final boolean isInitialized() { public final boolean isInitialized() {
if (!hasId()) {
return false;
}
for (int i = 0; i < getAnnotationCount(); i++) { for (int i = 0; i < getAnnotationCount(); i++) {
if (!getAnnotation(i).isInitialized()) { if (!getAnnotation(i).isInitialized()) {
@@ -1088,19 +1096,31 @@ public final class JsProtoBuf {
private int id_ ; private int id_ ;
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public boolean hasId() { public boolean hasId() {
return ((bitField0_ & 0x00000001) == 0x00000001); return ((bitField0_ & 0x00000001) == 0x00000001);
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public int getId() { public int getId() {
return id_; return id_;
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public Builder setId(int value) { public Builder setId(int value) {
bitField0_ |= 0x00000001; bitField0_ |= 0x00000001;
@@ -1109,7 +1129,11 @@ public final class JsProtoBuf {
return this; return this;
} }
/** /**
* <code>required int32 id = 1;</code> * <code>optional int32 id = 1;</code>
*
* <pre>
* If absent, id is the index of the file in the Files.file list
* </pre>
*/ */
public Builder clearId() { public Builder clearId() {
bitField0_ = (bitField0_ & ~0x00000001); bitField0_ = (bitField0_ & ~0x00000001);
@@ -42,7 +42,9 @@ class KotlinJavascriptPackageFragment(
private val nameResolver: NameResolver private val nameResolver: NameResolver
) : DeserializedPackageFragment(fqName, storageManager, module) { ) : DeserializedPackageFragment(fqName, storageManager, module) {
private val fileMap: Map<Int, FileHolder> by storageManager.createLazyValue { private val fileMap: Map<Int, FileHolder> by storageManager.createLazyValue {
proto.files.fileList.associate { file -> file.id to FileHolder(file.annotationList) } proto.files.fileList.withIndex().associate { (index, file) ->
(if (file.hasId()) file.id else index) to FileHolder(file.annotationList)
}
} }
private val annotationDeserializer: AnnotationDeserializer by storageManager.createLazyValue { private val annotationDeserializer: AnnotationDeserializer by storageManager.createLazyValue {
@@ -137,9 +137,11 @@ object KotlinJavascriptSerializationUtil {
serializer: AnnotationSerializer serializer: AnnotationSerializer
): JsProtoBuf.Files { ): JsProtoBuf.Files {
val filesProto = JsProtoBuf.Files.newBuilder() val filesProto = JsProtoBuf.Files.newBuilder()
for ((file, id) in fileRegistry.fileIds) { for ((file, id) in fileRegistry.fileIds.entries.sortedBy { it.value }) {
val fileProto = JsProtoBuf.File.newBuilder() val fileProto = JsProtoBuf.File.newBuilder()
fileProto.id = id if (id != filesProto.fileCount) {
fileProto.id = id
}
for (annotationPsi in file.annotationEntries) { for (annotationPsi in file.annotationEntries) {
val annotation = bindingContext[BindingContext.ANNOTATION, annotationPsi]!! val annotation = bindingContext[BindingContext.ANNOTATION, annotationPsi]!!
fileProto.addAnnotation(serializer.serializeAnnotation(annotation)) fileProto.addAnnotation(serializer.serializeAnnotation(annotation))