| // !LANGUAGE: +InlineClasses |
| |
| // FILE: utils.kt |
| |
| inline class UInt(val value: Int) |
| |
| // FILE: test.kt |
| |
| fun test(x: UInt?) { |
| x?.myLet { // unbox |
| takeUInt(it) |
| takeUInt(x) // unbox |
| } |
| |
| x?.myLet { // unbox |
| takeNullableUInt(it) // box |
| takeNullableUInt(x) |
| } |
| |
| x!!.myLet { // unbox |
| takeUInt(it) |
| takeUInt(x) // unbox |
| } |
| } |
| |
| fun takeUInt(y: UInt) {} |
| fun takeNullableUInt(y: UInt?) {} |
| |
| inline fun <T> T.myLet(f: (T) -> Unit) = f(this) |
| |
| // @TestKt.class: |
| // 1 INVOKESTATIC UInt\.box |
| // 5 INVOKEVIRTUAL UInt.unbox |
| |
| // 0 intValue |
| // 0 valueOf |