Use descriptors for reflection on top level properties

This also allows to obtain a Field object from the package part (see
mapping.kt)
This commit is contained in:
Alexander Udalov
2015-02-19 20:28:58 +03:00
parent d1debf586c
commit 1a618deeab
9 changed files with 116 additions and 51 deletions
@@ -0,0 +1,24 @@
import kotlin.platform.platformName
import kotlin.reflect.jvm.*
var state: String = "value"
[platformName("getter")]
get
[platformName("setter")]
set
fun box(): String {
val p = ::state
if (p.name != "state") return "Fail name: ${p.name}"
if (p.get() != "value") return "Fail get: ${p.get()}"
p.set("OK")
val getterName = p.javaGetter!!.getName()
if (getterName != "getter") return "Fail getter name: $getterName"
val setterName = p.javaSetter!!.getName()
if (setterName != "setter") return "Fail setter name: $setterName"
return p.get()
}