From d7e035fd9b5bc35bab8350a8024d087a5efe36ea Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 19 Jan 2016 14:04:20 +0300 Subject: [PATCH] Serialize annotations on type parameters in builtins --- .../kotlin/serialization/SerializerExtensionBase.kt | 6 ++++++ .../builtinsSerializer/typeParameterAnnotation.kt | 6 ++++++ .../builtinsSerializer/typeParameterAnnotation.txt | 8 ++++++++ .../serialization/builtins/BuiltInsSerializerTest.kt | 4 ++++ 4 files changed, 24 insertions(+) create mode 100644 compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.kt create mode 100644 compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.txt diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt index 91396c8ff13..13ece6fca41 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/SerializerExtensionBase.kt @@ -71,4 +71,10 @@ open class KotlinSerializerExtensionBase(private val protocol: SerializerExtensi proto.addExtension(protocol.typeAnnotation, annotationSerializer.serializeAnnotation(annotation)) } } + + override fun serializeTypeParameter(typeParameter: TypeParameterDescriptor, proto: ProtoBuf.TypeParameter.Builder) { + for (annotation in typeParameter.annotations) { + proto.addExtension(protocol.typeParameterAnnotation, annotationSerializer.serializeAnnotation(annotation)) + } + } } \ No newline at end of file diff --git a/compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.kt b/compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.kt new file mode 100644 index 00000000000..4d6f25bb8c9 --- /dev/null +++ b/compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.kt @@ -0,0 +1,6 @@ +package test + +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.TYPE_PARAMETER) +annotation class Ann(val value: String) +inline fun foo() {} diff --git a/compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.txt b/compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.txt new file mode 100644 index 00000000000..548cebf0cda --- /dev/null +++ b/compiler/testData/serialization/builtinsSerializer/typeParameterAnnotation.txt @@ -0,0 +1,8 @@ +package test + +public inline fun foo(): kotlin.Unit + +@kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE_PARAMETER}) public final annotation class Ann : kotlin.Annotation { + public constructor Ann(/*0*/ value: kotlin.String) + public final val value: kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt index 7aa64fc5e3f..5c206cd6b77 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/BuiltInsSerializerTest.kt @@ -62,6 +62,10 @@ class BuiltInsSerializerTest : TestCaseWithTmpdir() { doTest("simple.kt") } + fun testTypeParameterAnnotation() { + doTest("typeParameterAnnotation.kt") + } + fun testNestedClassesAndObjects() { doTest("nestedClassesAndObjects.kt") }