inline fun run(f: () -> T) = f() fun run2(f: () -> Unit) = f() fun inline() { val x = 1 run { x } val x1 = 1 run ({ x1 }) val x2 = 1 run (f = { x2 }) val x3 = 1 run { run { x3 } } } fun notInline() { val y2 = 1 run { y2 } run2 { y2 } val y3 = 1 run2 { y3 } run { y3 } // wrapped, using in not inline val z = 2 { z }() val z1 = 3 run2 { z1 } } fun nestedDifferent() { // inline within non-inline and vice-versa val y = 1 { run { y } }() val y1 = 1 run { { y1 }() } } fun localFunctionAndClass() { val u = 1 fun localFun() { run { u } } val v = 1 class LocalClass { fun f() { run { v } } } } fun objectExpression() { val u1 = 1 object : Any() { fun f() { run { u1 } } } val u2 = 1 object : Any() { val prop = run { u2 } } val u3 = "" object : Throwable(run { u3 }) { } }