| // WITH_REFLECT | |
| // TARGET_BACKEND: JVM | |
| // FILE: Ann1.java | |
| import java.lang.annotation.*; | |
| @Target({ElementType.FIELD}) | |
| @Retention(RetentionPolicy.RUNTIME) | |
| public @interface Ann1 {} | |
| // FILE: Ann2.java | |
| import java.lang.annotation.*; | |
| @Retention(RetentionPolicy.RUNTIME) | |
| public @interface Ann2 {} | |
| // FILE: box.kt | |
| class C { | |
| @Ann1 @Ann2 val x = 1 | |
| } | |
| fun box(): String { | |
| require(C::class.java.getDeclaredField("x")?.getAnnotation(Ann1::class.java) != null) { "no Ann1 on field x" } | |
| require(C::class.java.getDeclaredMethod("getX\$annotations")?.getAnnotation(Ann2::class.java) != null) { "no Ann2 on property x" } | |
| return "OK" | |
| } |