28 lines
618 B
Kotlin
Vendored
28 lines
618 B
Kotlin
Vendored
package foo
|
|
|
|
interface Base {
|
|
abstract fun foo(x: String): String
|
|
var prop: String
|
|
}
|
|
|
|
class BaseImpl(val s: String) : Base {
|
|
override fun foo(x: String): String = "Base: ${s}:${x}"
|
|
override var prop: String = "prop"
|
|
}
|
|
|
|
class Derived(b: Base) : Base by b
|
|
|
|
|
|
fun box(): String {
|
|
var d = Derived(BaseImpl("test"))
|
|
assertEquals("Base: test:!!", d.foo("!!"), "delegation by argument, function member")
|
|
assertEquals("prop", d.prop, "delegation by argument, get property")
|
|
|
|
d.prop = "new value"
|
|
assertEquals("new value", d.prop, "delegation by argument, set property")
|
|
|
|
return "OK"
|
|
}
|
|
|
|
|