Files
kotlin-fork/compiler/testData/codegen/box/reflection/mapping/topLevelProperty.kt
T
Mark Punzalan e226561150 [JVM IR] Copy metadata in IrFieldBuilder.
This fixes an issue with lateinit properties where the metadata from
the original field was not copied to the nullable field in
LateinitLowering. Also consolidated related tests.
2020-01-29 17:12:16 +01:00

34 lines
841 B
Kotlin
Vendored

// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// WITH_REFLECT
import kotlin.reflect.jvm.*
import kotlin.test.*
var topLevel = "123"
val fileFacadeClass = object {}::class.java.enclosingClass
fun box(): String {
val p = ::topLevel
assertNotNull(p.javaField, "Fail p field")
assertEquals(p.javaField!!.getDeclaringClass(), fileFacadeClass)
val getter = p.javaGetter!!
val setter = p.javaSetter!!
assertEquals(fileFacadeClass.getMethod("getTopLevel"), getter)
assertEquals(fileFacadeClass.getMethod("setTopLevel", String::class.java), setter)
assertNull(p.getter.javaConstructor)
assertNull(p.setter.javaConstructor)
assertEquals("123", getter.invoke(null), "Fail k getter")
setter.invoke(null, "456")
assertEquals("456", getter.invoke(null), "Fail k setter")
return "OK"
}