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, "1", "3") checkAccessor(packageClass.getDeclaredField("internalField").kotlinProperty as KMutableProperty0, "2", "4") } fun box(): String { testAccessors() return "OK" } public fun < R> checkAccessor(prop: KMutableProperty0, 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") }