JS: translate when against enum to JsSwitch when possible

This commit is contained in:
Alexey Andreev
2017-11-10 15:18:46 +03:00
parent c54c4a6ce8
commit 89db4dfe79
17 changed files with 159 additions and 38 deletions
@@ -1,4 +1,8 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=bar1 count=6
// CHECK_IF_COUNT: function=bar1 count=0
// CHECK_CASES_COUNT: function=bar2 count=6
// CHECK_IF_COUNT: function=bar2 count=0
import kotlin.test.assertEquals
@@ -1,4 +1,6 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=bar count=3
// CHECK_IF_COUNT: function=bar count=0
import kotlin.test.assertEquals
@@ -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,8 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=bar1 count=3
// CHECK_IF_COUNT: function=bar1 count=0
// CHECK_CASES_COUNT: function=bar2 count=4
// CHECK_IF_COUNT: function=bar2 count=0
import kotlin.test.assertEquals
@@ -1,3 +1,6 @@
// CHECK_CASES_COUNT: function=box$lambda count=0
// CHECK_IF_COUNT: function=box$lambda count=1
enum class Season {
WINTER,
SPRING,
@@ -1,3 +1,6 @@
// CHECK_CASES_COUNT: function=box count=6
// CHECK_IF_COUNT: function=box count=1
enum class En { A, B, С }
fun box(): String {
@@ -1,3 +1,6 @@
// CHECK_CASES_COUNT: function=box count=18
// CHECK_IF_COUNT: function=box count=3
enum class En { A, B, С }
fun box(): String {
@@ -1,3 +1,6 @@
// CHECK_CASES_COUNT: function=crash count=2
// CHECK_IF_COUNT: function=crash count=1
class EncapsulatedEnum<T : Enum<T>>(val value: T)
enum class MyEnum(val value: String) {
@@ -1,3 +1,5 @@
// CHECK_CASES_COUNT: function=doTheThing count=2
// CHECK_IF_COUNT: function=doTheThing count=2
private fun Any?.doTheThing(): String {
when (this) {
@@ -1,4 +1,8 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=bar1_u51tkt$ count=3
// CHECK_IF_COUNT: function=bar1_u51tkt$ count=0
// CHECK_CASES_COUNT: function=A$bar2$lambda count=3
// CHECK_IF_COUNT: function=A$bar2$lambda count=0
import kotlin.test.assertEquals
@@ -1,3 +1,6 @@
// CHECK_CASES_COUNT: function=box count=0
// CHECK_IF_COUNT: function=box count=1
enum class Season {
WINTER,
SPRING,
@@ -1,4 +1,8 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=foo1 count=0
// CHECK_IF_COUNT: function=foo1 count=2
// CHECK_CASES_COUNT: function=foo2 count=0
// CHECK_IF_COUNT: function=foo2 count=2
import kotlin.test.assertEquals
@@ -1,3 +1,6 @@
// CHECK_CASES_COUNT: function=test count=0
// CHECK_IF_COUNT: function=test count=3
enum class E {
A,
B
@@ -1,4 +1,6 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=foo count=0
// CHECK_IF_COUNT: function=foo count=3
import kotlin.test.assertEquals
@@ -1,4 +1,8 @@
// WITH_RUNTIME
// CHECK_CASES_COUNT: function=bar1 count=3
// CHECK_IF_COUNT: function=bar1 count=0
// CHECK_CASES_COUNT: function=bar2 count=4
// CHECK_IF_COUNT: function=bar2 count=0
import kotlin.test.assertEquals