59 lines
860 B
Plaintext
Vendored
59 lines
860 B
Plaintext
Vendored
object A {
|
|
private constructor() /* primary */ {
|
|
TODO("IrDelegatingConstructorCall")
|
|
/* InstanceInitializerCall */
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
object B {
|
|
private constructor() /* primary */ {
|
|
TODO("IrDelegatingConstructorCall")
|
|
/* InstanceInitializerCall */
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
interface IFoo {
|
|
val A.foo: B
|
|
get(): B {
|
|
return B
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
interface IInvoke {
|
|
operator fun B.invoke(): Int {
|
|
return 42
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
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>, (<this>, <this>).<get-foo>()).invoke()
|
|
}
|
|
)
|
|
}
|
|
)
|
|
}
|
|
) /*~> Unit */
|
|
}
|
|
|