| // TARGET_BACKEND: JVM | |
| // WITH_STDLIB | |
| // KT-5665 | |
| @Retention(AnnotationRetention.RUNTIME) | |
| annotation class First | |
| @Retention(AnnotationRetention.RUNTIME) | |
| annotation class Second(val value: String) | |
| enum class E { | |
| @First | |
| E1 { | |
| fun foo() = "something" | |
| }, | |
| @Second("OK") | |
| E2 | |
| } | |
| fun box(): String { | |
| val e = E::class.java | |
| val e1 = e.getDeclaredField(E.E1.toString()).getAnnotations() | |
| if (e1.size != 1) return "Fail E1 size: ${e1.toList()}" | |
| if (e1[0].annotationClass.java != First::class.java) return "Fail E1: ${e1.toList()}" | |
| val e2 = e.getDeclaredField(E.E2.toString()).getAnnotations() | |
| if (e2.size != 1) return "Fail E2 size: ${e2.toList()}" | |
| if (e2[0].annotationClass.java != Second::class.java) return "Fail E2: ${e2.toList()}" | |
| return (e2[0] as Second).value | |
| } |