== foo == fun foo() { "before" val b = 1 fun local(x: Int) { val a = x + b } "after" } --------------------- L0: 1 INIT: in: {} out: {} USE: in: {} out: {} 2 mark({ "before" val b = 1 fun local(x: Int) { val a = x + b } "after" }) mark("before") r("before") v(val b = 1) INIT: in: {} out: {b=D} r(1) INIT: in: {b=D} out: {b=D} w(b) INIT: in: {b=D} out: {b=ID} jmp?(L2) INIT: in: {b=ID} out: {b=ID} d(fun local(x: Int) { val a = x + b }) USE: in: {b=READ} out: {b=READ} L2: mark("after") r("after") L1: 1 INIT: in: {} out: {} error: sink: USE: in: {} out: {} ===================== == local == fun local(x: Int) { val a = x + b } --------------------- L3: 3 INIT: in: {b=ID} out: {b=ID} v(x: Int) INIT: in: {b=ID} out: {b=ID, x=D} w(x) INIT: in: {b=ID, x=D} out: {b=ID, x=ID} 4 mark({ val a = x + b }) INIT: in: {b=ID, x=ID} out: {b=ID, x=ID} v(val a = x + b) INIT: in: {b=ID, x=ID} out: {a=D, b=ID, x=ID} mark(x + b) INIT: in: {a=D, b=ID, x=ID} out: {a=D, b=ID, x=ID} USE: in: {b=READ, x=READ} out: {b=READ, x=READ} r(x) USE: in: {b=READ} out: {b=READ, x=READ} r(b) USE: in: {} out: {b=READ} call(+, plus) w(a) INIT: in: {a=D, b=ID, x=ID} out: {a=ID, b=ID, x=ID} L4: 3 INIT: in: {b=ID, x=ID} out: {b=ID, x=ID} error: INIT: in: {} out: {} sink: INIT: in: {b=ID, x=ID} out: {b=ID, x=ID} USE: in: {} out: {} =====================