Inline: Fix operand stack type verify error

This is a proposal to fix KT-49364.
Operand stack type verification happens before `checkcast`
is executed. When we implicitly cast an inline class
to a non-inline type, if type of stack value is not subtype
of the target, then coercing is necessary.
This commit is contained in:
Xin Wang
2022-08-23 22:47:39 +08:00
committed by teamcity
parent cc5f65be1e
commit 0eadf35132
4 changed files with 38 additions and 0 deletions
@@ -0,0 +1,19 @@
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
fun box(): String {
try {
val a:ULong = 1u
a as Int
func(a)
} catch (e: ClassCastException) {
return "OK"
}
return "FAIL"
}
fun func(para: Int) {}
// CHECK_BYTECODE_TEXT
// 1 CHECKCAST java/lang/Integer
// 1 L2I