Make retention of 'kotlin.annotation.annotation' to SOURCE. Serialize / deserialize it instead. Some fixed tests.
This commit is contained in:
@@ -93,3 +93,7 @@ extend org.jetbrains.kotlin.serialization.Callable.ValueParameter {
|
||||
// Index of the corresponding parameter of this method in JVM (counting receiver parameters, enum constructor synthetic parameters, etc.)
|
||||
optional int32 index = 100;
|
||||
}
|
||||
|
||||
extend org.jetbrains.kotlin.serialization.Class {
|
||||
repeated Annotation class_annotation = 100;
|
||||
}
|
||||
|
||||
+13
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.serialization.deserialization.AnnotationDeserializer
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ErrorReporter
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.serialization.deserialization.findClassAcrossModuleDependencies
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.types.ErrorUtils
|
||||
import java.util.ArrayList
|
||||
@@ -50,6 +51,18 @@ public class BinaryClassAnnotationAndConstantLoaderImpl(
|
||||
private val annotationDeserializer = AnnotationDeserializer(module)
|
||||
private val factory = ConstantValueFactory(module.builtIns)
|
||||
|
||||
override fun loadClassAnnotations(
|
||||
classProto: ProtoBuf.Class,
|
||||
nameResolver: NameResolver
|
||||
): List<AnnotationDescriptor> {
|
||||
val binaryAnnotationDescriptors = super.loadClassAnnotations(classProto, nameResolver)
|
||||
val serializedAnnotations = classProto.getExtension(JvmProtoBuf.classAnnotation).orEmpty()
|
||||
val serializedAnnotationDescriptors = serializedAnnotations.map {
|
||||
annotationDeserializer.deserializeAnnotation(it, nameResolver)
|
||||
}
|
||||
return binaryAnnotationDescriptors + serializedAnnotationDescriptors
|
||||
}
|
||||
|
||||
override fun loadTypeAnnotation(proto: ProtoBuf.Annotation, nameResolver: NameResolver): AnnotationDescriptor =
|
||||
annotationDeserializer.deserializeAnnotation(proto, nameResolver)
|
||||
|
||||
|
||||
+16
@@ -12,6 +12,7 @@ public final class JvmProtoBuf {
|
||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.implClassName);
|
||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.typeAnnotation);
|
||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.index);
|
||||
registry.add(org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf.classAnnotation);
|
||||
}
|
||||
public interface JvmTypeOrBuilder
|
||||
extends com.google.protobuf.MessageLiteOrBuilder {
|
||||
@@ -2880,6 +2881,21 @@ public final class JvmProtoBuf {
|
||||
null,
|
||||
100,
|
||||
com.google.protobuf.WireFormat.FieldType.INT32);
|
||||
public static final int CLASS_ANNOTATION_FIELD_NUMBER = 100;
|
||||
/**
|
||||
* <code>extend .org.jetbrains.kotlin.serialization.Class { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
com.google.protobuf.GeneratedMessageLite.GeneratedExtension<
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Class,
|
||||
java.util.List<org.jetbrains.kotlin.serialization.ProtoBuf.Annotation>> classAnnotation = com.google.protobuf.GeneratedMessageLite
|
||||
.newRepeatedGeneratedExtension(
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Class.getDefaultInstance(),
|
||||
org.jetbrains.kotlin.serialization.ProtoBuf.Annotation.getDefaultInstance(),
|
||||
null,
|
||||
100,
|
||||
com.google.protobuf.WireFormat.FieldType.MESSAGE,
|
||||
false);
|
||||
|
||||
static {
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user