Generate bridges for delegates
This commit is contained in:
@@ -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")
|
||||
}
|
||||
Reference in New Issue
Block a user