Generate bytecode for delegated properties

This commit is contained in:
Natalia.Ukhorskaya
2013-04-22 13:59:37 +04:00
parent 3297c0e9d3
commit 6e2584d0de
33 changed files with 731 additions and 50 deletions
@@ -0,0 +1,24 @@
class Delegate {
var inner = Derived()
fun get(t: Any?, p: String): Derived {
inner = Derived(inner.a + "-get")
return inner
}
fun set(t: Any?, p: String, i: Base) { inner = Derived(inner.a + "-" + i.a + "-set") }
}
class A {
var prop: Derived by Delegate()
}
fun box(): String {
val c = A()
if(c.prop.a != "derived-get") return "fail get ${c.prop.a}"
c.prop = Derived()
if (c.prop.a != "derived-get-derived-set-get") return "fail set ${c.prop.a}"
return "OK"
}
open class Base(open val a: String = "base")
class Derived(override val a: String = "derived"): Base()