e6f4d6e6fa
^KT-65406
47 lines
768 B
Kotlin
Vendored
47 lines
768 B
Kotlin
Vendored
interface IFoo {
|
|
val A.foo: B
|
|
get(): B {
|
|
return B
|
|
}
|
|
|
|
}
|
|
|
|
interface IInvoke {
|
|
operator fun B.invoke(): Int {
|
|
return 42
|
|
}
|
|
|
|
}
|
|
|
|
object A {
|
|
private constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
object B {
|
|
private constructor() /* primary */ {
|
|
super/*Any*/()
|
|
/* <init>() */
|
|
|
|
}
|
|
|
|
}
|
|
|
|
fun test(fooImpl: IFoo, invokeImpl: IInvoke) {
|
|
with<A, Int>(receiver = A, block = local fun A.<anonymous>(): Int {
|
|
return with<IFoo, Int>(receiver = fooImpl, block = local fun IFoo.<anonymous>(): Int {
|
|
return with<IInvoke, Int>(receiver = invokeImpl, block = local fun IInvoke.<anonymous>(): Int {
|
|
return ($this$with, ($this$with, $this$with).<get-foo>()).invoke()
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|
|
) /*~> Unit */
|
|
}
|
|
|