| // WITH_STDLIB | |
| import kotlin.test.* | |
| import kotlin.reflect.KProperty | |
| val sb = StringBuilder() | |
| class Delegate { | |
| var f: Int = 42 | |
| operator fun getValue(receiver: Any?, p: KProperty<*>): Int { | |
| sb.appendLine("get ${p.name}") | |
| return f | |
| } | |
| operator fun setValue(receiver: Any?, p: KProperty<*>, value: Int) { | |
| sb.appendLine("set ${p.name}") | |
| f = value | |
| } | |
| } | |
| class C { | |
| var x: Int by Delegate() | |
| } | |
| fun box(): String { | |
| val c = C() | |
| sb.appendLine(c.x) | |
| c.x = 117 | |
| sb.appendLine(c.x) | |
| assertEquals(""" | |
| get x | |
| 42 | |
| set x | |
| get x | |
| 117 | |
| """.trimIndent(), sb.toString()) | |
| return "OK" | |
| } |