JS: translate when to JsSwitch when possible
See KT-21160
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo count=3
|
||||
// CHECK_IF_COUNT: function=foo count=0
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo count=4
|
||||
// CHECK_IF_COUNT: function=foo count=0
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo1 count=2
|
||||
// CHECK_IF_COUNT: function=foo1 count=1
|
||||
// CHECK_CASES_COUNT: function=foo2 count=4
|
||||
// CHECK_IF_COUNT: function=foo2 count=0
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo1 count=4
|
||||
// CHECK_IF_COUNT: function=foo1 count=0
|
||||
// CHECK_CASES_COUNT: function=foo2 count=4
|
||||
// CHECK_IF_COUNT: function=foo2 count=0
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=dense count=10
|
||||
// CHECK_IF_COUNT: function=dense count=0
|
||||
|
||||
fun dense(x: Int): Int {
|
||||
return when (x) {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo count=9
|
||||
// CHECK_IF_COUNT: function=foo count=0
|
||||
|
||||
fun foo(x: Int): Int {
|
||||
return when (x) {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=sparse count=3
|
||||
// CHECK_IF_COUNT: function=sparse count=0
|
||||
|
||||
fun sparse(x: Int): Int {
|
||||
return when ((x % 4) * 100) {
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=exhaustive count=3
|
||||
// CHECK_IF_COUNT: function=exhaustive count=0
|
||||
// CHECK_CASES_COUNT: function=nonExhaustive count=3
|
||||
// CHECK_IF_COUNT: function=nonExhaustive count=0
|
||||
|
||||
fun exhaustive(x: Int): Int {
|
||||
var r: Int
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=intFoo count=3
|
||||
// CHECK_IF_COUNT: function=intFoo count=0
|
||||
// CHECK_CASES_COUNT: function=shortFoo count=3
|
||||
// CHECK_IF_COUNT: function=shortFoo count=0
|
||||
// CHECK_CASES_COUNT: function=byteFoo count=3
|
||||
// CHECK_IF_COUNT: function=byteFoo count=0
|
||||
// CHECK_CASES_COUNT: function=charFoo count=3
|
||||
// CHECK_IF_COUNT: function=charFoo count=0
|
||||
|
||||
fun intFoo(x: Int): Int {
|
||||
return when (x) {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo count=3
|
||||
// CHECK_IF_COUNT: function=foo count=0
|
||||
|
||||
fun foo(x: Int): Int {
|
||||
return when (x) {
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
// WITH_RUNTIME
|
||||
// CHECK_CASES_COUNT: function=foo count=4
|
||||
// CHECK_IF_COUNT: function=foo count=1
|
||||
|
||||
var log = ""
|
||||
|
||||
fun foo(x: Int): String {
|
||||
log += "foo($x);"
|
||||
return when (x) {
|
||||
1 -> "one"
|
||||
2 -> "two"
|
||||
three(x) -> "three"
|
||||
4 -> "four"
|
||||
5 -> "five"
|
||||
else -> "many"
|
||||
}
|
||||
}
|
||||
|
||||
fun three(x: Int): Int {
|
||||
log += "three($x);"
|
||||
return 3
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
var result = (1..7).map(::foo).joinToString()
|
||||
|
||||
if (result != "one, two, three, four, five, many, many") return "fail1: $result"
|
||||
if (log != "foo(1);foo(2);foo(3);three(3);foo(4);three(4);foo(5);three(5);foo(6);three(6);foo(7);three(7);") return "fail2: $log"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user