// FILE: 1.kt class My(val value: Int) inline fun T.perform(job: (T)-> R) : R { return job(this) } // FILE: 2.kt fun test1() : Int { val inlineX = My(111) return inlineX.perform{ val outX = My(1111111) outX.perform( {inlineX.value} ) } } inline fun My.execute(): Int { return perform { this.value } } fun test2(): Int { val inlineX = My(11) return inlineX.execute() } fun box(): String { if (test1() != 111) return "test1: ${test1()}" if (test2() != 11) return "test2: ${test2()}" return "OK" }