| // FILE: test.kt |
| |
| fun stringSwitch(x: String) { |
| val l = when { |
| x == "x" -> 1 |
| x == "xy" -> 2 |
| else -> -1 |
| } |
| |
| val l2 = when (x) { |
| "x" -> 1 |
| "xy" -> 2 |
| else -> -1 |
| } |
| |
| val l3 = when |
| (x) |
| { |
| "x" -> 1 |
| "xy" -> 2 |
| else -> -1 |
| } |
| } |
| |
| fun box() { |
| stringSwitch("x") |
| stringSwitch("xy") |
| stringSwitch("nope") |
| } |
| |
| // JVM_IR uses the line number of the start of the `when` as the line number |
| // for the lookup/table switch. Therefore when the subject and the when is |
| // on separate lines the first step is on the subject, then steop to the when, |
| // then to the right branch. |
| |
| // JVM_IR uses unoptimized lookup/table switches for all these cases. JVM |
| // does not. So on JVM there are direct jumps to the right branch for the |
| // last two whens. |
| |
| // EXPECTATIONS |
| // test.kt:26 box |
| // test.kt:4 stringSwitch |
| // test.kt:5 stringSwitch |
| // test.kt:4 stringSwitch |
| // test.kt:10 stringSwitch |
| // test.kt:11 stringSwitch |
| // test.kt:10 stringSwitch |
| // test.kt:17 stringSwitch |
| // EXPECTATIONS JVM_IR |
| // test.kt:16 stringSwitch |
| // EXPECTATIONS |
| // test.kt:19 stringSwitch |
| // test.kt:16 stringSwitch |
| // test.kt:23 stringSwitch |
| // test.kt:27 box |
| // test.kt:4 stringSwitch |
| // test.kt:5 stringSwitch |
| // test.kt:6 stringSwitch |
| // test.kt:4 stringSwitch |
| // test.kt:10 stringSwitch |
| // EXPECTATIONS JVM_IR |
| // test.kt:11 stringSwitch |
| // EXPECTATIONS |
| // test.kt:12 stringSwitch |
| // test.kt:10 stringSwitch |
| // test.kt:17 stringSwitch |
| // EXPECTATIONS JVM_IR |
| // test.kt:16 stringSwitch |
| // test.kt:19 stringSwitch |
| // EXPECTATIONS |
| // test.kt:20 stringSwitch |
| // test.kt:16 stringSwitch |
| // test.kt:23 stringSwitch |
| // test.kt:28 box |
| // test.kt:4 stringSwitch |
| // test.kt:5 stringSwitch |
| // test.kt:6 stringSwitch |
| // test.kt:7 stringSwitch |
| // test.kt:4 stringSwitch |
| // test.kt:10 stringSwitch |
| // EXPECTATIONS JVM_IR |
| // test.kt:11 stringSwitch |
| // test.kt:12 stringSwitch |
| // EXPECTATIONS |
| // test.kt:13 stringSwitch |
| // test.kt:10 stringSwitch |
| // test.kt:17 stringSwitch |
| // EXPECTATIONS JVM_IR |
| // test.kt:16 stringSwitch |
| // test.kt:19 stringSwitch |
| // test.kt:20 stringSwitch |
| // EXPECTATIONS |
| // test.kt:21 stringSwitch |
| // test.kt:16 stringSwitch |
| // test.kt:23 stringSwitch |
| // test.kt:29 box |