| // TARGET_BACKEND: JVM |
| |
| // WITH_REFLECT |
| |
| package test |
| |
| import kotlin.reflect.KMutableProperty0 |
| import kotlin.reflect.jvm.kotlinProperty |
| import kotlin.test.assertEquals |
| |
| public var publicField = "1" |
| internal var internalField = "2" |
| |
| fun testAccessors() { |
| val packageClass = Class.forName("test.TopLevelFieldReflectionKt") |
| packageClass.getDeclaredField("publicField").kotlinProperty |
| checkAccessor(packageClass.getDeclaredField("publicField").kotlinProperty as KMutableProperty0<String>, "1", "3") |
| checkAccessor(packageClass.getDeclaredField("internalField").kotlinProperty as KMutableProperty0<String>, "2", "4") |
| } |
| |
| |
| fun box(): String { |
| testAccessors() |
| return "OK" |
| } |
| |
| public fun < R> checkAccessor(prop: KMutableProperty0<R>, value: R, newValue: R) { |
| assertEquals(prop.get(), value, "Property ${prop} has wrong value") |
| prop.set(newValue) |
| assertEquals(prop.get(), newValue, "Property ${prop} has wrong value") |
| } |