== with == fun with(t: T, f : T.() -> Unit) { t.f() } --------------------- : {<: T} NEW: magic[FAKE_INITIALIZER](t: T) -> : {<: T.() -> Unit} NEW: magic[FAKE_INITIALIZER](f : T.() -> Unit) -> t : {<: T} NEW: r(t) -> f : {<: (T) -> Unit} NEW: r(f) -> f() : * NEW: call(f(), invoke|, ) -> t.f() : * COPY { t.f() } : * COPY ===================== == foo == val Int.foo: String.() -> Unit get() = {} --------------------- ===================== == bar == fun bar() { with(1) { "".(foo)() } } --------------------- 1 : Int NEW: r(1) -> { "".(foo)() } : {<: Int.() -> Unit} NEW: r({ "".(foo)() }) -> with(1) { "".(foo)() } : * NEW: call(with(1) { "".(foo)() }, with|, ) -> { with(1) { "".(foo)() } } : * COPY ===================== == anonymous_0 == { "".(foo)() } --------------------- : Int NEW: magic[IMPLICIT_RECEIVER](foo) -> "" : String NEW: r("") -> foo : {<: (String) -> Unit} NEW: r(foo|) -> (foo) : {<: (String) -> Unit} COPY (foo)() : * NEW: call((foo)(), invoke|, ) -> "".(foo)() : * COPY "".(foo)() : * COPY =====================