== myRun == inline fun myRun(block: () -> Unit): Unit { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } block() } --------------------- : {<: () -> Unit} NEW: magic[FAKE_INITIALIZER](block: () -> Unit) -> { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } : {<: ContractBuilder.() -> Unit} NEW: r({ callsInPlace(block, InvocationKind.EXACTLY_ONCE) }) -> contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } : * NEW: call(contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }, contract|) -> block : {<: () -> Unit} NEW: r(block) -> block() : * NEW: call(block(), invoke|) -> { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } block() } : * COPY ===================== == anonymous_0 == { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } --------------------- : {<: ContractBuilder} NEW: magic[IMPLICIT_RECEIVER](callsInPlace(block, InvocationKind.EXACTLY_ONCE)) -> block : {<: Function} NEW: r(block) -> EXACTLY_ONCE : {<: InvocationKind} NEW: r(EXACTLY_ONCE) -> InvocationKind.EXACTLY_ONCE : {<: InvocationKind} COPY callsInPlace(block, InvocationKind.EXACTLY_ONCE) : * NEW: call(callsInPlace(block, InvocationKind.EXACTLY_ONCE), callsInPlace|, , ) -> callsInPlace(block, InvocationKind.EXACTLY_ONCE) : * COPY ===================== == test == fun test() { myRun { throw java.lang.IllegalArgumentException() } val x: Int = 42 } --------------------- { throw java.lang.IllegalArgumentException() } : {<: () -> Unit} NEW: r({ throw java.lang.IllegalArgumentException() }) -> myRun { throw java.lang.IllegalArgumentException() } : * NEW: call(myRun { throw java.lang.IllegalArgumentException() }, myRun|) -> 42 : Int NEW: r(42) -> ===================== == inlined anonymous_1 == { throw java.lang.IllegalArgumentException() } --------------------- IllegalArgumentException() : {<: Throwable} NEW: call(IllegalArgumentException(), ) -> java.lang.IllegalArgumentException() : {<: Throwable} COPY throw java.lang.IllegalArgumentException() !: * throw java.lang.IllegalArgumentException() !: * COPY =====================