JVM_IR: check for null when converting unboxed inline classes to strings
`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
This commit is contained in:
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
// !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
|
||||
Reference in New Issue
Block a user