| // TARGET_BACKEND: JVM |
| // WITH_STDLIB |
| // FILE: A.java |
| |
| public class A { |
| @Annos(value = @Anno(token = "OK")) |
| @Strings(value = "OK") |
| @Ints(value = 42) |
| @Enums(value = E.EA) |
| @Classes(value = double.class) |
| public void test() {} |
| } |
| |
| // FILE: box.kt |
| |
| import kotlin.reflect.KClass |
| import kotlin.test.assertEquals |
| |
| annotation class Anno(val token: String) |
| enum class E { EA } |
| |
| annotation class Annos(val value: Array<Anno>) |
| annotation class Strings(val value: Array<String>) |
| annotation class Ints(val value: IntArray) |
| annotation class Enums(val value: Array<E>) |
| annotation class Classes(val value: Array<KClass<*>>) |
| |
| class C : A() |
| |
| fun box(): String { |
| val annotations = C::class.java.getMethod("test").annotations.toList() |
| assertEquals("OK", annotations.filterIsInstance<Annos>().single().value.single().token) |
| assertEquals("OK", annotations.filterIsInstance<Strings>().single().value.single()) |
| assertEquals(42, annotations.filterIsInstance<Ints>().single().value.single()) |
| assertEquals(E.EA, annotations.filterIsInstance<Enums>().single().value.single()) |
| assertEquals(Double::class, annotations.filterIsInstance<Classes>().single().value.single()) |
| return "OK" |
| } |