Turn off incorrect switch-optimization for when by enums

#KT-24708 Fixed
This commit is contained in:
Denis Zharkov
2018-08-09 16:34:32 +07:00
parent fc3c4ad883
commit c1cc722ac4
13 changed files with 181 additions and 11 deletions
@@ -0,0 +1,30 @@
enum class A {
O, K
}
enum class B {
O, K
}
fun box(): String {
val a = A.O
val r1 = when (a) {
A.O -> "O"
A.K -> "K"
B.O -> "fail 1"
B.K -> "fail 2"
}
val b = B.K
val r2 = when (b) {
A.O -> "fail 3"
A.K -> "fail 4"
B.O -> "O"
B.K -> "K"
}
return r1 + r2
}
// 0 TABLESWITCH
// 0 LOOKUPSWITCH
@@ -0,0 +1,19 @@
enum class A {
OK
}
enum class B {
FAIL
}
fun f() = A.OK
fun box(): String {
return when (f()) {
B.FAIL -> "fail"
A.OK -> "OK"
}
}
// 0 TABLESWITCH
// 0 LOOKUPSWITCH