== A == class A(val w: Char) { val x: Int var y: Int val z: Int val v = -1 constructor(): this('a') { y = 2 } // anonymous init { x = w z = 8 } constructor(a: Int, b: Int = 3): this(b.toChar()) { y = x } // anonymous init { y = 9 } } --------------------- : Char NEW: magic[FAKE_INITIALIZER](val w: Char) -> : A NEW: magic[IMPLICIT_RECEIVER](x) -> : A NEW: magic[IMPLICIT_RECEIVER](w) -> : A NEW: magic[IMPLICIT_RECEIVER](z) -> : A NEW: magic[IMPLICIT_RECEIVER](y) -> 1 : Int NEW: r(1) -> -1 : Int NEW: call(-1, unaryMinus|) -> w : Int NEW: r(w|) -> 8 : Int NEW: r(8) -> z = 8 !: * { x = w z = 8 } !: * COPY 9 : Int NEW: r(9) -> y = 9 !: * { y = 9 } !: * COPY ===================== == A == constructor(): this('a') { y = 2 } --------------------- : A NEW: magic[IMPLICIT_RECEIVER](y) -> 'a' : Char NEW: r('a') -> this('a') : * NEW: call(this('a'), |) -> 2 : Int NEW: r(2) -> y = 2 !: * { y = 2 } !: * COPY ===================== == A == constructor(a: Int, b: Int = 3): this(b.toChar()) { y = x } --------------------- : Int NEW: magic[FAKE_INITIALIZER](a: Int) -> : Int NEW: magic[FAKE_INITIALIZER](b: Int = 3) -> : A NEW: magic[IMPLICIT_RECEIVER](y) -> : A NEW: magic[IMPLICIT_RECEIVER](x) -> 3 : Int NEW: r(3) -> b: Int = 3 : Int NEW: merge(b: Int = 3|, ) -> b : {<: Number} NEW: r(b) -> toChar() : Char NEW: call(toChar(), toChar|) -> b.toChar() : Char COPY this(b.toChar()) : * NEW: call(this(b.toChar()), |) -> x : Int NEW: r(x|) -> y = x !: * { y = x } !: * COPY =====================