== foo == fun foo() { "before" if (true) { val a = 1 } else { val b = 2 } "after" } --------------------- L0: 1 INIT: in: {} out: {} 2 mark({ "before" if (true) { val a = 1 } else { val b = 2 } "after" }) mark("before") r("before") -> mark(if (true) { val a = 1 } else { val b = 2 }) r(true) -> jf(L2|) 3 mark({ val a = 1 }) v(val a = 1) INIT: in: {} out: {} r(1) -> INIT: in: {} out: {} w(a|) INIT: in: {} out: {} 2 jmp(L3) INIT: in: {} out: {} L2 [else branch]: 3 mark({ val b = 2 }) v(val b = 2) INIT: in: {} out: {} r(2) -> INIT: in: {} out: {} w(b|) INIT: in: {} out: {} L3 ['if' expression result]: 2 merge(if (true) { val a = 1 } else { val b = 2 }|!, !) -> INIT: in: {} out: {} mark("after") r("after") -> L1: 1 error: sink: USE: in: {} out: {} =====================