| fun <T> eval(fn: () -> T) = fn() | |
| class A { | |
| var result: Int = 0; | |
| private val Int.times3: Int | |
| get() = this * 3 | |
| private var Int.times: Int | |
| get() = this * 4 | |
| set(s: Int) { | |
| result = this * s | |
| } | |
| fun test(p: Int):Int { | |
| return eval { p.times3 } | |
| } | |
| fun test2(p: Int, s: Int):Int { | |
| eval { p.times = s } | |
| return result | |
| } | |
| } | |
| fun box() : String { | |
| var result = A().test(3); | |
| if (result != 9) return "fail1: $result" | |
| result = A().test2(2, 4); | |
| if (result != 8) return "fail2: $result" | |
| return "OK" | |
| } |