Load new proto messages for functions and properties
This commit is contained in:
@@ -26,7 +26,20 @@ extend Class {
|
||||
}
|
||||
|
||||
extend Callable {
|
||||
repeated Annotation callable_annotation = 130;
|
||||
repeated Annotation old_callable_annotation = 130;
|
||||
optional Annotation.Argument.Value old_compile_time_value = 131;
|
||||
}
|
||||
|
||||
extend Constructor {
|
||||
repeated Annotation constructor_annotation = 130;
|
||||
}
|
||||
|
||||
extend Function {
|
||||
repeated Annotation function_annotation = 130;
|
||||
}
|
||||
|
||||
extend Property {
|
||||
repeated Annotation property_annotation = 130;
|
||||
optional Annotation.Argument.Value compile_time_value = 131;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,11 @@ public final class JsProtoBuf {
|
||||
public static void registerAllExtensions(
|
||||
com.google.protobuf.ExtensionRegistryLite registry) {
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.classAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.callableAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.oldCallableAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.oldCompileTimeValue);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.constructorAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.functionAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.propertyAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.compileTimeValue);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.parameterAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.js.JsProtoBuf.typeAnnotation);
|
||||
@@ -1477,14 +1481,14 @@ public final class JsProtoBuf {
|
||||
130,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||
false);
|
||||
public static final int CALLABLE_ANNOTATION_FIELD_NUMBER = 130;
|
||||
public static final int OLD_CALLABLE_ANNOTATION_FIELD_NUMBER = 130;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Callable { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Callable,
|
||||
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> callableAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> oldCallableAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||
.newRepeatedGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(),
|
||||
@@ -1492,14 +1496,14 @@ public final class JsProtoBuf {
|
||||
130,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||
false);
|
||||
public static final int COMPILE_TIME_VALUE_FIELD_NUMBER = 131;
|
||||
public static final int OLD_COMPILE_TIME_VALUE_FIELD_NUMBER = 131;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Callable { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Callable,
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> compileTimeValue = com.google.protobuf.GeneratedMessageLite
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> oldCompileTimeValue = com.google.protobuf.GeneratedMessageLite
|
||||
.newSingularGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Callable.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(),
|
||||
@@ -1507,6 +1511,66 @@ public final class JsProtoBuf {
|
||||
null,
|
||||
131,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE);
|
||||
public static final int CONSTRUCTOR_ANNOTATION_FIELD_NUMBER = 130;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Constructor { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Constructor,
|
||||
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> constructorAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||
.newRepeatedGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Constructor.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(),
|
||||
null,
|
||||
130,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||
false);
|
||||
public static final int FUNCTION_ANNOTATION_FIELD_NUMBER = 130;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Function { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Function,
|
||||
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> functionAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||
.newRepeatedGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Function.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(),
|
||||
null,
|
||||
130,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||
false);
|
||||
public static final int PROPERTY_ANNOTATION_FIELD_NUMBER = 130;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Property { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Property,
|
||||
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> propertyAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||
.newRepeatedGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Property.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(),
|
||||
null,
|
||||
130,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||
false);
|
||||
public static final int COMPILE_TIME_VALUE_FIELD_NUMBER = 131;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Property { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Property,
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value> compileTimeValue = com.google.protobuf.GeneratedMessageLite
|
||||
.newSingularGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Property.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.Argument.Value.getDefaultInstance(),
|
||||
null,
|
||||
131,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE);
|
||||
public static final int PARAMETER_ANNOTATION_FIELD_NUMBER = 130;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.ValueParameter { ... }</code>
|
||||
|
||||
+7
-4
@@ -43,9 +43,12 @@ class KotlinJavascriptAnnotationAndConstantLoader(
|
||||
proto: MessageLite,
|
||||
kind: AnnotatedCallableKind
|
||||
): List<AnnotationWithTarget> {
|
||||
proto as ProtoBuf.Callable // TODO
|
||||
|
||||
val annotations = proto.getExtension(JsProtoBuf.callableAnnotation).orEmpty()
|
||||
val annotations = when (proto) {
|
||||
is ProtoBuf.Constructor -> proto.getExtension(JsProtoBuf.constructorAnnotation)
|
||||
is ProtoBuf.Function -> proto.getExtension(JsProtoBuf.functionAnnotation)
|
||||
is ProtoBuf.Property -> proto.getExtension(JsProtoBuf.propertyAnnotation)
|
||||
else -> error("Unknown message: $proto")
|
||||
}.orEmpty()
|
||||
return annotations.map { proto -> AnnotationWithTarget(deserializer.deserializeAnnotation(proto, container.nameResolver), null) }
|
||||
}
|
||||
|
||||
@@ -73,7 +76,7 @@ class KotlinJavascriptAnnotationAndConstantLoader(
|
||||
|
||||
override fun loadPropertyConstant(
|
||||
container: ProtoContainer,
|
||||
proto: ProtoBuf.Callable,
|
||||
proto: ProtoBuf.Property,
|
||||
expectedType: JetType
|
||||
): ConstantValue<*>? {
|
||||
val value = proto.getExtension(JsProtoBuf.compileTimeValue)
|
||||
|
||||
+18
-10
@@ -16,10 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.serialization.js
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.resolve.constants.NullValue
|
||||
import org.jetbrains.kotlin.serialization.AnnotationSerializer
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
@@ -39,13 +36,24 @@ public class KotlinJavascriptSerializerExtension : SerializerExtension() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun serializeCallable(callable: CallableMemberDescriptor, proto: ProtoBuf.Callable.Builder) {
|
||||
for (annotation in callable.annotations) {
|
||||
proto.addExtension(JsProtoBuf.callableAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
||||
override fun serializeConstructor(descriptor: ConstructorDescriptor, proto: ProtoBuf.Constructor.Builder) {
|
||||
for (annotation in descriptor.annotations) {
|
||||
proto.addExtension(JsProtoBuf.constructorAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
||||
}
|
||||
val propertyDescriptor = callable as? PropertyDescriptor ?: return
|
||||
val constantInitializer = propertyDescriptor.compileTimeInitializer
|
||||
if (constantInitializer != null && constantInitializer !is NullValue) {
|
||||
}
|
||||
|
||||
override fun serializeFunction(descriptor: FunctionDescriptor, proto: ProtoBuf.Function.Builder) {
|
||||
for (annotation in descriptor.annotations) {
|
||||
proto.addExtension(JsProtoBuf.functionAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
||||
}
|
||||
}
|
||||
|
||||
override fun serializeProperty(descriptor: PropertyDescriptor, proto: ProtoBuf.Property.Builder) {
|
||||
for (annotation in descriptor.annotations) {
|
||||
proto.addExtension(JsProtoBuf.propertyAnnotation, annotationSerializer.serializeAnnotation(annotation))
|
||||
}
|
||||
val constantInitializer = descriptor.compileTimeInitializer ?: return
|
||||
if (constantInitializer !is NullValue) {
|
||||
proto.setExtension(JsProtoBuf.compileTimeValue, annotationSerializer.valueProto(constantInitializer).build())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user