Serialize type annotations in builtins
This commit is contained in:
+7
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.resolve.constants.NullValue
|
import org.jetbrains.kotlin.resolve.constants.NullValue
|
||||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||||
import org.jetbrains.kotlin.serialization.*
|
import org.jetbrains.kotlin.serialization.*
|
||||||
|
import org.jetbrains.kotlin.types.JetType
|
||||||
|
|
||||||
public class BuiltInsSerializerExtension : SerializerExtension() {
|
public class BuiltInsSerializerExtension : SerializerExtension() {
|
||||||
private val stringTable = StringTableImpl()
|
private val stringTable = StringTableImpl()
|
||||||
@@ -83,4 +84,10 @@ public class BuiltInsSerializerExtension : SerializerExtension() {
|
|||||||
proto.addExtension(BuiltInsProtoBuf.parameterAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
proto.addExtension(BuiltInsProtoBuf.parameterAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun serializeType(type: JetType, proto: ProtoBuf.Type.Builder) {
|
||||||
|
for (annotation in type.annotations) {
|
||||||
|
proto.addExtension(BuiltInsProtoBuf.typeAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-1
@@ -16,6 +16,7 @@ public final class DebugBuiltInsProtoBuf {
|
|||||||
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.propertyAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.propertyAnnotation);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.compileTimeValue);
|
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.compileTimeValue);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.parameterAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.parameterAnnotation);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.builtins.DebugBuiltInsProtoBuf.typeAnnotation);
|
||||||
}
|
}
|
||||||
public static final int CLASS_NAME_FIELD_NUMBER = 150;
|
public static final int CLASS_NAME_FIELD_NUMBER = 150;
|
||||||
/**
|
/**
|
||||||
@@ -116,6 +117,17 @@ public final class DebugBuiltInsProtoBuf {
|
|||||||
.newFileScopedGeneratedExtension(
|
.newFileScopedGeneratedExtension(
|
||||||
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class,
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class,
|
||||||
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance());
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance());
|
||||||
|
public static final int TYPE_ANNOTATION_FIELD_NUMBER = 150;
|
||||||
|
/**
|
||||||
|
* <code>extend .org.jetbrains.kotlin.serialization.Type { ... }</code>
|
||||||
|
*/
|
||||||
|
public static final
|
||||||
|
com.google.protobuf.GeneratedMessage.GeneratedExtension<
|
||||||
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Type,
|
||||||
|
java.util.List<org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation>> typeAnnotation = com.google.protobuf.GeneratedMessage
|
||||||
|
.newFileScopedGeneratedExtension(
|
||||||
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.class,
|
||||||
|
org.jetbrains.kotlin.serialization.DebugProtoBuf.Annotation.getDefaultInstance());
|
||||||
|
|
||||||
public static com.google.protobuf.Descriptors.FileDescriptor
|
public static com.google.protobuf.Descriptors.FileDescriptor
|
||||||
getDescriptor() {
|
getDescriptor() {
|
||||||
@@ -156,7 +168,10 @@ public final class DebugBuiltInsProtoBuf {
|
|||||||
"\201\001\n\024parameter_annotation\0222.org.jetbrains" +
|
"\201\001\n\024parameter_annotation\0222.org.jetbrains" +
|
||||||
".kotlin.serialization.ValueParameter\030\226\001 ",
|
".kotlin.serialization.ValueParameter\030\226\001 ",
|
||||||
"\003(\0132..org.jetbrains.kotlin.serialization" +
|
"\003(\0132..org.jetbrains.kotlin.serialization" +
|
||||||
".AnnotationB\027B\025DebugBuiltInsProtoBuf"
|
".Annotation:r\n\017type_annotation\022(.org.jet" +
|
||||||
|
"brains.kotlin.serialization.Type\030\226\001 \003(\0132" +
|
||||||
|
"..org.jetbrains.kotlin.serialization.Ann" +
|
||||||
|
"otationB\027B\025DebugBuiltInsProtoBuf"
|
||||||
};
|
};
|
||||||
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
||||||
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
|
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
|
||||||
@@ -172,6 +187,7 @@ public final class DebugBuiltInsProtoBuf {
|
|||||||
propertyAnnotation.internalInit(descriptor.getExtensions().get(6));
|
propertyAnnotation.internalInit(descriptor.getExtensions().get(6));
|
||||||
compileTimeValue.internalInit(descriptor.getExtensions().get(7));
|
compileTimeValue.internalInit(descriptor.getExtensions().get(7));
|
||||||
parameterAnnotation.internalInit(descriptor.getExtensions().get(8));
|
parameterAnnotation.internalInit(descriptor.getExtensions().get(8));
|
||||||
|
typeAnnotation.internalInit(descriptor.getExtensions().get(9));
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
+1
-2
@@ -68,8 +68,7 @@ class BuiltInsAnnotationAndConstantLoader(
|
|||||||
): List<AnnotationDescriptor> = emptyList()
|
): List<AnnotationDescriptor> = emptyList()
|
||||||
|
|
||||||
override fun loadTypeAnnotations(proto: ProtoBuf.Type, nameResolver: NameResolver): List<AnnotationDescriptor> {
|
override fun loadTypeAnnotations(proto: ProtoBuf.Type, nameResolver: NameResolver): List<AnnotationDescriptor> {
|
||||||
// TODO: support type annotations in built-ins
|
return proto.getExtension(BuiltInsProtoBuf.typeAnnotation).orEmpty().map { deserializer.deserializeAnnotation(it, nameResolver) }
|
||||||
return listOf()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadPropertyConstant(
|
override fun loadPropertyConstant(
|
||||||
|
|||||||
@@ -51,3 +51,7 @@ extend Property {
|
|||||||
extend ValueParameter {
|
extend ValueParameter {
|
||||||
repeated Annotation parameter_annotation = 150;
|
repeated Annotation parameter_annotation = 150;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extend Type {
|
||||||
|
repeated Annotation type_annotation = 150;
|
||||||
|
}
|
||||||
|
|||||||
+16
@@ -16,6 +16,7 @@ public final class BuiltInsProtoBuf {
|
|||||||
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.propertyAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.propertyAnnotation);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.compileTimeValue);
|
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.compileTimeValue);
|
||||||
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.parameterAnnotation);
|
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.parameterAnnotation);
|
||||||
|
registry.add(org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf.typeAnnotation);
|
||||||
}
|
}
|
||||||
public static final int CLASS_NAME_FIELD_NUMBER = 150;
|
public static final int CLASS_NAME_FIELD_NUMBER = 150;
|
||||||
/**
|
/**
|
||||||
@@ -152,6 +153,21 @@ public final class BuiltInsProtoBuf {
|
|||||||
150,
|
150,
|
||||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||||
false);
|
false);
|
||||||
|
public static final int TYPE_ANNOTATION_FIELD_NUMBER = 150;
|
||||||
|
/**
|
||||||
|
* <code>extend .org.jetbrains.kotlin.serialization.Type { ... }</code>
|
||||||
|
*/
|
||||||
|
public static final
|
||||||
|
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Type,
|
||||||
|
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> typeAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||||
|
.newRepeatedGeneratedExtension(
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Type.getDefaultInstance(),
|
||||||
|
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(),
|
||||||
|
null,
|
||||||
|
150,
|
||||||
|
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||||
|
false);
|
||||||
|
|
||||||
static {
|
static {
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user