IR: IrTypeAlias: serialize/deserialize new IR objects

Add uniqId for typealias declarations.
Implement WrappedTypeAliasDescriptor.
This commit is contained in:
Dmitry Petrov
2019-07-23 16:49:24 +03:00
parent b3525b077c
commit f590d4da9e
26 changed files with 2449 additions and 88 deletions
@@ -110,6 +110,11 @@ extend org.jetbrains.kotlin.metadata.PackageFragment {
optional Files package_fragment_files = 130;
}
extend org.jetbrains.kotlin.metadata.TypeAlias {
// TODO repeated org.jetbrains.kotlin.metadata.Annotation type_alias_annotation = 130;
optional DescriptorUniqId type_alias_uniq_id = 131;
}
message Classes {
// id in StringTable
repeated int32 class_name = 1 [packed = true];
@@ -18,6 +18,7 @@ object JsDescriptorUniqIdAware: DescriptorUniqIdAware {
is DeserializedPropertyDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.propertyUniqId)
is DeserializedClassConstructorDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.constructorUniqId)
is DeserializedTypeParameterDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.typeParamUniqId)
is DeserializedTypeAliasDescriptor -> this.proto.tryGetExtension(JsKlibMetadataProtoBuf.typeAliasUniqId)
else -> null
}?.index
}
@@ -1,5 +1,5 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: compiler/ir/backend.js/src/js.proto
// source: compiler/ir/serialization.js/src/js.proto
package org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata;
@@ -30,6 +30,7 @@ public final class JsKlibMetadataProtoBuf {
registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeParameterAnnotation);
registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeParamUniqId);
registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.packageFragmentFiles);
registry.add(org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.typeAliasUniqId);
}
public interface HeaderOrBuilder extends
// @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.Header)
@@ -4215,6 +4216,26 @@ public final class JsKlibMetadataProtoBuf {
130,
org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE,
org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.Files.class);
public static final int TYPE_ALIAS_UNIQ_ID_FIELD_NUMBER = 131;
/**
* <code>extend .org.jetbrains.kotlin.metadata.TypeAlias { ... }</code>
*
* <pre>
* TODO repeated org.jetbrains.kotlin.metadata.Annotation type_alias_annotation = 130;
* </pre>
*/
public static final
org.jetbrains.kotlin.protobuf.GeneratedMessageLite.GeneratedExtension<
org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias,
org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId> typeAliasUniqId = org.jetbrains.kotlin.protobuf.GeneratedMessageLite
.newSingularGeneratedExtension(
org.jetbrains.kotlin.metadata.ProtoBuf.TypeAlias.getDefaultInstance(),
org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(),
org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.getDefaultInstance(),
null,
131,
org.jetbrains.kotlin.protobuf.WireFormat.FieldType.MESSAGE,
org.jetbrains.kotlin.ir.backend.js.lower.serialization.metadata.JsKlibMetadataProtoBuf.DescriptorUniqId.class);
static {
}
@@ -41,6 +41,11 @@ class JsKlibMetadataSerializerExtension(
super.serializeTypeParameter(typeParameter, proto)
}
override fun serializeTypeAlias(typeAlias: TypeAliasDescriptor, proto: ProtoBuf.TypeAlias.Builder) {
uniqId(typeAlias)?.let { proto.setExtension(JsKlibMetadataProtoBuf.typeAliasUniqId, it) }
super.serializeTypeAlias(typeAlias, proto)
}
override fun serializeValueParameter(descriptor: ValueParameterDescriptor, proto: ProtoBuf.ValueParameter.Builder) {
uniqId(descriptor)?.let { proto.setExtension(JsKlibMetadataProtoBuf.valueParamUniqId, it) }
super.serializeValueParameter(descriptor, proto)