Generate bridges for delegates

This commit is contained in:
Alexander Udalov
2012-10-29 22:50:26 +04:00
parent dc5174670d
commit 3ca976ee77
6 changed files with 69 additions and 9 deletions
@@ -0,0 +1,11 @@
trait A<T> {
fun foo(): T
}
class B : A<String> {
override fun foo() = "OK"
}
class C(a: A<String>) : A<String> by a
fun box() = (C(B()) : A<String>).foo()
@@ -0,0 +1,15 @@
trait A<T> {
var result: T
}
class B(a: A<String>): A<String> by a
fun box(): String {
val o = object : A<String> {
override var result = "Fail"
}
val b: A<String> = B(o)
b.result = "OK"
if (b.result != "OK") return "Fail"
return (b : A<String>).result
}
@@ -0,0 +1,17 @@
trait A<T> {
fun id(t: T): T
}
open class B : A<String> {
override fun id(t: String) = t
}
class C : B()
class D : A<String> by C()
fun box(): String {
val d = D()
if (d.id("") != "") return "Fail"
return (d : A<String>).id("OK")
}