== foo == fun foo() { val a = 1 val f = { x: Int -> val y = x + a use(a) } } --------------------- L0: 1 INIT: in: {} out: {} 2 mark({ val a = 1 val f = { x: Int -> val y = x + a use(a) } }) v(val a = 1) INIT: in: {} out: {} r(1) -> INIT: in: {} out: {} w(a|) INIT: in: {} out: {} v(val f = { x: Int -> val y = x + a use(a) }) INIT: in: {} out: {} mark({ x: Int -> val y = x + a use(a) }) INIT: in: {} out: {} jmp?(L2) d({ x: Int -> val y = x + a use(a) }) INIT: in: {} out: {} L2 [after local declaration]: r({ x: Int -> val y = x + a use(a) }) -> w(f|) INIT: in: {} out: {} L1: 1 INIT: in: {} out: {} error: sink: USE: in: {} out: {} ===================== == anonymous_0 == { x: Int -> val y = x + a use(a) } --------------------- L3: 3 INIT: in: {} out: {} v(x: Int) INIT: in: {} out: {} magic[FAKE_INITIALIZER](x: Int) -> INIT: in: {} out: {} w(x|) INIT: in: {} out: {} 4 mark(val y = x + a use(a)) INIT: in: {} out: {} v(val y = x + a) INIT: in: {} out: {} r(x) -> INIT: in: {} out: {} r(a) -> mark(x + a) call(x + a, plus|, ) -> w(y|) INIT: in: {} out: {} r(a) -> INIT: in: {} out: {} mark(use(a)) call(use(a), use|) -> 3 ret(*|) L4 L4: error: sink: USE: in: {} out: {} ===================== == use == fun use(vararg a: Any?) = a --------------------- L0: 1 INIT: in: {} out: {} v(vararg a: Any?) INIT: in: {} out: {} magic[FAKE_INITIALIZER](vararg a: Any?) -> INIT: in: {} out: {} w(a|) INIT: in: {} out: {} r(a) -> INIT: in: {} out: {} ret(*|) L1 L1: error: sink: USE: in: {} out: {} =====================