Generate annotations on enum entry constants in bytecode
#KT-5665 Fixed
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
// KT-5665
|
||||
|
||||
import java.lang.annotation.*
|
||||
|
||||
Retention(RetentionPolicy.RUNTIME)
|
||||
annotation class First
|
||||
|
||||
Retention(RetentionPolicy.RUNTIME)
|
||||
annotation class Second(val value: String)
|
||||
|
||||
enum class E {
|
||||
[First]
|
||||
E1 {
|
||||
fun foo() = "something"
|
||||
}
|
||||
|
||||
[Second("OK")]
|
||||
E2
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val e = javaClass<E>()
|
||||
|
||||
val e1 = e.getDeclaredField(E.E1.toString()).getAnnotations()
|
||||
if (e1.size != 1) return "Fail E1 size: ${e1.toList()}"
|
||||
if (e1[0].annotationType() != javaClass<First>()) 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].annotationType() != javaClass<Second>()) return "Fail E2: ${e2.toList()}"
|
||||
|
||||
return (e2[0] as Second).value
|
||||
}
|
||||
Reference in New Issue
Block a user