| // FILE: utils.kt | |
| inline class Foo(val a: Int) | |
| // FILE: test.kt | |
| fun <T> id(x: T): T = x | |
| inline fun <T> inlinedId(x: T): T = x | |
| fun <T> T.idExtension(): T = this | |
| inline fun <T> T.inlinedIdExtension(): T = this | |
| fun test(f: Foo) { | |
| inlinedId(f) | |
| inlinedId(f).idExtension() // box | |
| f.inlinedIdExtension() | |
| val a = inlinedId(f).idExtension() // box unbox | |
| val b = inlinedId(f).inlinedIdExtension() | |
| } | |
| // @TestKt.class: | |
| // 2 INVOKESTATIC Foo\.box | |
| // 1 INVOKEVIRTUAL Foo.unbox | |
| // 0 valueOf | |
| // 0 intValue |