Support boxing for inline classes on function calls

This commit is contained in:
Mikhail Zarechenskiy
2018-02-05 06:00:32 +03:00
parent 0d682879f5
commit 390c214943
7 changed files with 123 additions and 55 deletions
@@ -0,0 +1,17 @@
// !LANGUAGE: +InlineClasses
inline class InlineNotNullPrimitive(val x: Int)
inline class InlineNotNullReference(val y: String)
fun <T> testNotNullPrimitive(a: Any, b: T, c: InlineNotNullPrimitive, d: InlineNotNullPrimitive?) {}
fun <T> testNotNullReference(a: Any, b: T, c: InlineNotNullReference, d: InlineNotNullReference?) {}
fun test(a: InlineNotNullPrimitive, b: InlineNotNullReference) {
testNotNullPrimitive(a, a, a, a) // 3 box
testNotNullReference(b, b, b, b) // 2 box
}
// 3 INVOKESTATIC InlineNotNullPrimitive\$Erased.box
// 2 INVOKESTATIC InlineNotNullReference\$Erased.box
// 0 valueOf