== with == fun with(t: T, f : T.() -> Unit) { t.f() } --------------------- L0: 1 v(t: T) magic[FAKE_INITIALIZER](t: T) -> w(t|) v(f : T.() -> Unit) magic[FAKE_INITIALIZER](f : T.() -> Unit) -> w(f|) 2 mark({ t.f() }) mark(t.f()) r(f) -> r(t) -> mark(f()) call(f(), invoke|, ) -> L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == val Int.foo: String.() -> Unit get() = {} --------------------- L0: 1 v(val Int.foo: String.() -> Unit get() = {}) L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == bar == fun bar() { with(1) { "".(foo)() } } --------------------- L0: 1 2 mark({ with(1) { "".(foo)() } }) r(1) -> mark({ "".(foo)() }) jmp?(L2) NEXT:[r({ "".(foo)() }) -> , d({ "".(foo)() })] d({ "".(foo)() }) NEXT:[] L2 [after local declaration]: r({ "".(foo)() }) -> PREV:[jmp?(L2)] mark(with(1) { "".(foo)() }) call(with(1) { "".(foo)() }, with|, ) -> L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, , d({ "".(foo)() })] ===================== == anonymous_0 == { "".(foo)() } --------------------- L3: 3 4 mark("".(foo)()) mark("".(foo)()) mark((foo)) magic[IMPLICIT_RECEIVER](foo) -> r(foo|) -> mark("") r("") -> mark((foo)()) call((foo)(), invoke|, ) -> L4: 3 NEXT:[] error: PREV:[] sink: PREV:[, ] =====================