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