Copy annotation and attributes on class transformation during inline
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
// FILE: 1.kt
|
||||
//WITH_RUNTIME
|
||||
package test
|
||||
|
||||
annotation class MethodAnnotation
|
||||
|
||||
inline fun reproduceIssue(crossinline s: () -> String): String {
|
||||
val obj = object {
|
||||
@MethodAnnotation fun annotatedMethod(): String {
|
||||
return s()
|
||||
}
|
||||
}
|
||||
val annotatedMethod = obj::class.java.declaredMethods.first { it.name == "annotatedMethod" }
|
||||
if (annotatedMethod.annotations.isEmpty()) return "fail: can't find annotated method"
|
||||
return obj.annotatedMethod()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return reproduceIssue { "OK" }
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
// FILE: 1.kt
|
||||
//WITH_RUNTIME
|
||||
package test
|
||||
|
||||
annotation class FieldAnnotation
|
||||
|
||||
inline fun reproduceIssue(crossinline s: () -> String): String {
|
||||
val obj = object {
|
||||
@field:FieldAnnotation val annotatedField = "O"
|
||||
fun method(): String {
|
||||
return annotatedField + s()
|
||||
}
|
||||
}
|
||||
val annotatedMethod = obj::class.java.declaredFields.first { it.name == "annotatedField" }
|
||||
if (annotatedMethod.annotations.isEmpty()) return "fail: can't find annotated field"
|
||||
return obj.method()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
import test.*
|
||||
|
||||
fun box(): String {
|
||||
return reproduceIssue { "K" }
|
||||
}
|
||||
Reference in New Issue
Block a user