== TestFunctionLiteral == class TestFunctionLiteral { val sum: (Int)->Int = { x: Int -> sum(x - 1) + x } } --------------------- { x: Int -> sum(x - 1) + x } : {<: (Int) -> Int} NEW: r({ x: Int -> sum(x - 1) + x }) -> ===================== == anonymous_0 == { x: Int -> sum(x - 1) + x } --------------------- : Int NEW: magic[FAKE_INITIALIZER](x: Int) -> : TestFunctionLiteral NEW: magic[IMPLICIT_RECEIVER](sum) -> sum : {<: (Int) -> Int} NEW: r(sum|) -> x : Int NEW: r(x) -> 1 : Int NEW: r(1) -> x - 1 : Int NEW: call(x - 1, minus|, ) -> sum(x - 1) : Int NEW: call(sum(x - 1), invoke|, ) -> x : Int NEW: r(x) -> sum(x - 1) + x : Int NEW: call(sum(x - 1) + x, plus|, ) -> sum(x - 1) + x : Int COPY ===================== == A == open class A(val a: A) --------------------- : {<: A} NEW: magic[FAKE_INITIALIZER](val a: A) -> ===================== == TestObjectLiteral == class TestObjectLiteral { val obj: A = object: A(obj) { init { val x = obj } fun foo() { val y = obj } } } --------------------- : TestObjectLiteral NEW: magic[IMPLICIT_RECEIVER](obj) -> : TestObjectLiteral NEW: magic[IMPLICIT_RECEIVER](obj) -> obj : {<: A} NEW: r(obj|) -> A(obj) : * NEW: call(A(obj), |) -> obj : {<: A} NEW: r(obj|) -> object: A(obj) { init { val x = obj } fun foo() { val y = obj } } : {<: A} NEW: r(object: A(obj) { init { val x = obj } fun foo() { val y = obj } }) -> ===================== == foo == fun foo() { val y = obj } --------------------- : TestObjectLiteral NEW: magic[IMPLICIT_RECEIVER](obj) -> obj : {<: A} NEW: r(obj|) -> ===================== == TestOther == class TestOther { val x: Int = x + 1 } --------------------- : TestOther NEW: magic[IMPLICIT_RECEIVER](x) -> x : Int NEW: r(x|) -> 1 : Int NEW: r(1) -> x + 1 : Int NEW: call(x + 1, plus|, ) -> =====================