diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java
index b5423e9b0e2..c7b63639b41 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java
@@ -40147,6 +40147,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
runTest("compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotation.kt");
}
+ @Test
+ @TestMetadata("kotlinAnnotationOnType.kt")
+ public void testKotlinAnnotationOnType() throws Exception {
+ runTest("compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotationOnType.kt");
+ }
+
@Test
@TestMetadata("kt49335.kt")
public void testKt49335() throws Exception {
diff --git a/compiler/testData/codegen/box/reflection/annotations/repeatable/jvmRepeatableKotlinAnnotation.kt b/compiler/testData/codegen/box/reflection/annotations/repeatable/jvmRepeatableKotlinAnnotation.kt
index b544b4478b8..f8c528427ff 100644
--- a/compiler/testData/codegen/box/reflection/annotations/repeatable/jvmRepeatableKotlinAnnotation.kt
+++ b/compiler/testData/codegen/box/reflection/annotations/repeatable/jvmRepeatableKotlinAnnotation.kt
@@ -4,7 +4,7 @@
// FULL_JDK
// WITH_REFLECT
-// Android doesn't have @Repeatable, so findAnnotations can't unpack repeatable annotations.
+// Android doesn't have @Repeatable before API level 24, so findAnnotations can't unpack repeatable annotations.
// IGNORE_BACKEND: ANDROID
import kotlin.reflect.full.findAnnotation
diff --git a/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotation.kt b/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotation.kt
index b68e8ca4989..f712be956fd 100644
--- a/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotation.kt
+++ b/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotation.kt
@@ -4,9 +4,6 @@
// FULL_JDK
// WITH_REFLECT
-// Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Native crash''. Check device logcat for details
-// IGNORE_BACKEND: ANDROID
-
import kotlin.annotation.AnnotationTarget.*
import kotlin.reflect.KAnnotatedElement
import kotlin.reflect.full.findAnnotation
@@ -30,7 +27,7 @@ fun check(element: KAnnotatedElement) {
}
@Repeatable
-@Target(CLASS, FUNCTION, PROPERTY, TYPE)
+@Target(CLASS, FUNCTION, PROPERTY)
annotation class A(val value: String)
@A("O") @A("") @A("K")
@@ -42,12 +39,9 @@ var p = 1
@A("O") @A("K")
class Z
-fun g(): @A("O") @A("K") @A("") Unit {}
-
fun box(): String {
check(::f)
check(::p)
check(Z::class)
- check(::g.returnType)
return "OK"
}
diff --git a/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotationOnType.kt b/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotationOnType.kt
new file mode 100644
index 00000000000..a1d3dc85cec
--- /dev/null
+++ b/compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotationOnType.kt
@@ -0,0 +1,42 @@
+// !LANGUAGE: +RepeatableAnnotations
+// TARGET_BACKEND: JVM_IR
+// JVM_TARGET: 1.8
+// FULL_JDK
+// WITH_REFLECT
+
+// Test failed to run to completion. Reason: 'Instrumentation run failed due to 'Native crash''. Check device logcat for details
+// Because TYPE_USE is not avaiable before API level 26
+// IGNORE_BACKEND: ANDROID
+
+import kotlin.annotation.AnnotationTarget.*
+import kotlin.reflect.KAnnotatedElement
+import kotlin.reflect.full.findAnnotation
+import kotlin.reflect.full.findAnnotations
+import kotlin.reflect.full.hasAnnotation
+
+fun check(element: KAnnotatedElement) {
+ if (!element.hasAnnotation()) throw AssertionError("Fail hasAnnotation $element")
+
+ val find = element.findAnnotation()
+ if (find == null || find.value != "O") throw AssertionError("Fail findAnnotation $element: $find")
+
+ val all = element.annotations
+ val findAll = element.findAnnotations()
+ if (all != findAll) throw AssertionError("Fail findAnnotations $element: $all != $findAll")
+
+ if (all.any { it !is A })
+ throw AssertionError("Fail 1 $element: $all")
+ if (all.fold("") { acc, it -> acc + (it as A).value } != "OK")
+ throw AssertionError("Fail 2 $element: $all")
+}
+
+@Repeatable
+@Target(CLASS, FUNCTION, PROPERTY, TYPE)
+annotation class A(val value: String)
+
+fun g(): @A("O") @A("K") @A("") Unit {}
+
+fun box(): String {
+ check(::g.returnType)
+ return "OK"
+}
diff --git a/compiler/testData/codegen/box/reflection/annotations/repeatable/kt49335.kt b/compiler/testData/codegen/box/reflection/annotations/repeatable/kt49335.kt
index f6c0e875b36..fbf494a7411 100644
--- a/compiler/testData/codegen/box/reflection/annotations/repeatable/kt49335.kt
+++ b/compiler/testData/codegen/box/reflection/annotations/repeatable/kt49335.kt
@@ -4,7 +4,7 @@
// FULL_JDK
// WITH_REFLECT
-// Android doesn't have @Repeatable, so findAnnotations can't unpack repeatable annotations.
+// Android doesn't have @Repeatable before API level 24, so findAnnotations can't unpack repeatable annotations.
// IGNORE_BACKEND: ANDROID
// FILE: A.kt
diff --git a/compiler/testData/codegen/box/reflection/annotations/repeatable/nonRepeatedAnnotationWithItsContainer.kt b/compiler/testData/codegen/box/reflection/annotations/repeatable/nonRepeatedAnnotationWithItsContainer.kt
index 1e39de487a4..169a95d0c7d 100644
--- a/compiler/testData/codegen/box/reflection/annotations/repeatable/nonRepeatedAnnotationWithItsContainer.kt
+++ b/compiler/testData/codegen/box/reflection/annotations/repeatable/nonRepeatedAnnotationWithItsContainer.kt
@@ -4,7 +4,7 @@
// FULL_JDK
// WITH_REFLECT
-// Android doesn't have @Repeatable.
+// Android doesn't have @Repeatable before API level 24.
// IGNORE_BACKEND: ANDROID
package test
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
index 401b8ec9871..a92f0dddbc2 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
@@ -40147,6 +40147,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotation.kt");
}
+ @Test
+ @TestMetadata("kotlinAnnotationOnType.kt")
+ public void testKotlinAnnotationOnType() throws Exception {
+ runTest("compiler/testData/codegen/box/reflection/annotations/repeatable/kotlinAnnotationOnType.kt");
+ }
+
@Test
@TestMetadata("kt49335.kt")
public void testKt49335() throws Exception {