| /* |
| * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license |
| * that can be found in the LICENSE file. |
| */ |
| // JVM_ABI_K1_K2_DIFF: KT-63864 |
| // 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" |
| } |