optimization of delegates by val property

This commit is contained in:
Alex Tkachman
2012-09-08 09:34:02 +03:00
parent b4746ff53c
commit 53f145b533
3 changed files with 100 additions and 14 deletions
@@ -0,0 +1,25 @@
trait IActing {
fun act(): String
}
class CActing(val value: String = "OK"): IActing {
override fun act(): String = value
}
// final so no need in delegate field
class Test(val acting: CActing = CActing()): IActing by acting {
}
// even if open so we don't need delegate field
open class Test2(open val acting: CActing = CActing()): IActing by acting {
}
// even if open the backing field is final, so we don't need delegate field
class Test3() : Test2() {
override val acting = CActing("OKOK")
}
fun box(): String {
val test = Test()
return test.act()
}