inline fun fInt(g: (Int) -> Unit) { g(1) } inline fun fBoolean(g: (Boolean) -> Unit) { g(true) } inline fun fChar(g: (Char) -> Unit) { g('a') } inline fun fByte(g: (Byte) -> Unit) { g(1) } inline fun fShort(g: (Short) -> Unit) { g(1) } inline fun fFloat(g: (Float) -> Unit) { g(1.0f) } inline fun fLong(g: (Long) -> Unit) { g(1L) } inline fun fDouble(g: (Double) -> Unit) { g(1.0) } fun bar() { fInt { } fBoolean { } fChar { } fByte { } fShort { } fFloat { } fLong { } fDouble { } } suspend fun baz() { fInt { } fBoolean { } fChar { } fByte { } fShort { } fFloat { } fLong { } fDouble { } } // The inline functions will contain boxing for the value passed to the lambda. // 8 valueOf // After inlining there will be boxing and unboxing that is not needed. That should be optimized out. // 0 intValue // 0 booleanValue // 0 charValue // 0 byteValue // 0 shortValue // 0 floatValue // 0 longValue // 0 doubleValue