Support unboxing of inline classes after assertion operator
This commit is contained in:
Vendored
+36
@@ -0,0 +1,36 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class WithPrimitive(val a: Int)
|
||||
fun takeWithPrimitive(a: WithPrimitive) {}
|
||||
|
||||
inline class WithReference(val a: Any)
|
||||
fun takeWithReference(a: WithReference) {}
|
||||
|
||||
inline class WithNullableReference(val a: Any?)
|
||||
fun takeWithNullableReference(a: WithNullableReference) {}
|
||||
|
||||
fun foo(a: WithPrimitive?, b: WithPrimitive) {
|
||||
takeWithPrimitive(a!!) // unbox
|
||||
takeWithPrimitive(a) // unbox
|
||||
takeWithPrimitive(b!!)
|
||||
}
|
||||
|
||||
fun bar(a: WithReference?, b: WithReference) {
|
||||
takeWithReference(a!!)
|
||||
takeWithReference(a)
|
||||
takeWithReference(b!!)
|
||||
}
|
||||
|
||||
fun baz(a: WithNullableReference?, b: WithNullableReference) {
|
||||
takeWithNullableReference(a!!) // unbox
|
||||
takeWithNullableReference(a) // unbox
|
||||
takeWithNullableReference(a!!) // unbox
|
||||
takeWithNullableReference(b!!)
|
||||
}
|
||||
|
||||
// 2 INVOKEVIRTUAL WithPrimitive\.unbox
|
||||
// 0 INVOKEVIRTUAL WithReference\.unbox
|
||||
// 3 INVOKEVIRTUAL WithNullableReference\.unbox
|
||||
|
||||
// 0 intValue
|
||||
// 0 valueOf
|
||||
Reference in New Issue
Block a user