Don't transform irBranch if tableswitch can't be generated

#KT-34466 Fixed
This commit is contained in:
Xin Wang
2022-03-03 12:44:44 +08:00
committed by Dmitry Petrov
parent 5f1cf34c79
commit 4277827506
6 changed files with 106 additions and 11 deletions
@@ -0,0 +1,25 @@
// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
enum class E {
A, B, C, D;
}
val abc = setOf(E.A, E.B, E.C)
fun bar(): E = E.A
fun foo(e: E): String {
val c = when (e) {
E.B -> "B"
in abc -> "OK"
else -> "else"
}
return c
}
fun box() = foo(bar())
// CHECK_BYTECODE_TEXT
// 0 WhenMappings
// 0 TABLESWITCH
@@ -0,0 +1,22 @@
// TARGET_BACKEND: JVM_IR
enum class E {
A, B;
}
fun bar(): E = E.A
fun foo(e: E): String {
val c = when (e) {
E.B -> "B"
bar() -> "OK"
else -> "else"
}
return c
}
fun box() = foo(bar())
// CHECK_BYTECODE_TEXT
// 0 WhenMappings
// 0 TABLESWITCH
@@ -17,3 +17,7 @@ fun test(e: E?) = when (e) {
fun box(): String {
return test(null)
}
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 TABLESWITCH