Turn off incorrect switch-optimization for when by enums
#KT-24708 Fixed
This commit is contained in:
+30
@@ -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
|
||||
+19
@@ -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
|
||||
Reference in New Issue
Block a user