bd6ead0467
`C?` can be unboxed into `T?` if if wraps a reference type `T!!`, but in this case `null` is not a valid value to pass to `toString-impl`. #KT-42005 Fixed
18 lines
583 B
Kotlin
Vendored
18 lines
583 B
Kotlin
Vendored
// !LANGUAGE: +InlineClasses
|
|
// Completely incorrect bytecode - see `box/inlineClasses/toStringOfUnboxedNullable.kt`
|
|
// IGNORE_BACKEND: JVM
|
|
|
|
// FILE: Z.kt
|
|
inline class Z(val x: Any)
|
|
|
|
// FILE: test.kt
|
|
fun testZ(z: Z) = z.toString()
|
|
fun testZT(z: Z) = "$z"
|
|
fun testNZ(z: Z?) = z?.toString() // `Z?` is unboxed into `Any?` even before the null check
|
|
fun testNZA(z: Z?) = z.toString() // so all of these call toString-impl
|
|
fun testNZT(z: Z?) = "$z"
|
|
|
|
// @TestKt.class:
|
|
// 5 INVOKESTATIC Z\.toString-impl \(Ljava/lang/Object;\)Ljava/lang/String;
|
|
// 0 INVOKESTATIC java/lang/String.valueOf
|