== TestFunctionLiteral == class TestFunctionLiteral { val sum: (Int)->Int = { x: Int -> sum(x - 1) + x } } --------------------- L0: 1 INIT: in: {} out: {} v(val sum: (Int)->Int = { x: Int -> sum(x - 1) + x }) INIT: in: {} out: {} mark({ x: Int -> sum(x - 1) + x }) INIT: in: {} out: {} jmp?(L2) d({ x: Int -> sum(x - 1) + x }) INIT: in: {} out: {} L2 [after local declaration]: r({ x: Int -> sum(x - 1) + x }) -> w(sum|) INIT: in: {} out: {} L1: INIT: in: {} out: {} error: sink: USE: in: {} out: {} ===================== == anonymous_0 == { x: Int -> sum(x - 1) + x } --------------------- L3: 2 INIT: in: {} out: {} v(x: Int) INIT: in: {} out: {} magic[FAKE_INITIALIZER](x: Int) -> INIT: in: {} out: {} w(x|) INIT: in: {} out: {} 3 mark(sum(x - 1) + x) INIT: in: {} out: {} magic[IMPLICIT_RECEIVER](sum) -> r(sum|) -> r(x) -> r(1) -> mark(x - 1) call(x - 1, minus|, ) -> mark(sum(x - 1)) call(sum(x - 1), invoke|, ) -> r(x) -> mark(sum(x - 1) + x) call(sum(x - 1) + x, plus|, ) -> 2 ret(*|) L4 L4: error: sink: USE: in: {} out: {} ===================== == A == open class A(val a: A) --------------------- L0: 1 INIT: in: {} out: {} v(val a: A) INIT: in: {} out: {} magic[FAKE_INITIALIZER](val a: A) -> INIT: in: {} out: {} w(a|) INIT: in: {} out: {} L1: INIT: in: {} out: {} error: sink: USE: in: {} out: {} ===================== == TestObjectLiteral == class TestObjectLiteral { val obj: A = object: A(obj) { init { val x = obj } fun foo() { val y = obj } } } --------------------- L0: 1 INIT: in: {} out: {} v(val obj: A = object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) INIT: in: {} out: {} mark(object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) INIT: in: {} out: {} magic[IMPLICIT_RECEIVER](obj) -> r(obj|) -> mark(A(obj)) call(A(obj), |) -> 2 mark({ val x = obj }) v(val x = obj) INIT: in: {} out: {} magic[IMPLICIT_RECEIVER](obj) -> INIT: in: {} out: {} r(obj|) -> w(x|) INIT: in: {} out: {} 1 jmp?(L2) INIT: in: {} out: {} d(fun foo() { val y = obj }) INIT: in: {} out: {} L2 [after local declaration]: r(object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) -> w(obj|) INIT: in: {} out: {} L1: INIT: in: {} out: {} error: sink: USE: in: {} out: {} ===================== == foo == fun foo() { val y = obj } --------------------- L3: 2 INIT: in: {} out: {} 3 mark({ val y = obj }) v(val y = obj) INIT: in: {} out: {} magic[IMPLICIT_RECEIVER](obj) -> INIT: in: {} out: {} r(obj|) -> w(y|) INIT: in: {} out: {} L4: 2 INIT: in: {} out: {} error: sink: USE: in: {} out: {} ===================== == TestOther == class TestOther { val x: Int = x + 1 } --------------------- L0: 1 INIT: in: {} out: {} v(val x: Int = x + 1) INIT: in: {} out: {} magic[IMPLICIT_RECEIVER](x) -> INIT: in: {} out: {} r(x|) -> r(1) -> mark(x + 1) call(x + 1, plus|, ) -> w(x|) INIT: in: {} out: {} L1: INIT: in: {} out: {} error: sink: USE: in: {} out: {} =====================