// T fun (() -> T).invoke(): T // │ │ fun run(block: () -> T): T = block() fun test_1() { // fun run(() -> Unit): Unit // │ run { return@run } // fun run(() -> ???): ??? // │ run { return } } fun test_2() { // fun run(() -> Int): Int // │ Int // │ │ run(fun (): Int { return 1 }) }