When by String constants:
Generate TABLESWITCH/LOOKUPSWITCH bytecode operation for when operator by String constants
This commit is contained in:
committed by
Evgeny Gerashchenko
parent
5a1c995b5c
commit
d4cb822ee8
@@ -0,0 +1,20 @@
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun foo(x : String) : String {
|
||||
when (x) {
|
||||
"abc" -> return "abc"
|
||||
"efg", "ghi", "abc" -> return "efg_ghi"
|
||||
else -> return "other"
|
||||
}
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
assertEquals("abc", foo("abc"))
|
||||
assertEquals("efg_ghi", foo("efg"))
|
||||
assertEquals("efg_ghi", foo("ghi"))
|
||||
|
||||
assertEquals("other", foo("xyz"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun foo(x : String) : String {
|
||||
assert("abz]".hashCode() == "aby|".hashCode())
|
||||
|
||||
when (x) {
|
||||
"abz]" -> return "abz"
|
||||
"ghi" -> return "ghi"
|
||||
"aby|" -> return "aby"
|
||||
"abz]" -> return "fail"
|
||||
}
|
||||
|
||||
return "other"
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
assertEquals("abz", foo("abz]"))
|
||||
assertEquals("aby", foo("aby|"))
|
||||
assertEquals("ghi", foo("ghi"))
|
||||
|
||||
assertEquals("other", foo("xyz"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun foo(x : String) : String {
|
||||
return when (x) {
|
||||
"abc", "cde" -> "abc_cde"
|
||||
"efg", "ghi" -> "efg_ghi"
|
||||
else -> "other"
|
||||
}
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
assertEquals("abc_cde", foo("abc"))
|
||||
assertEquals("abc_cde", foo("cde"))
|
||||
assertEquals("efg_ghi", foo("efg"))
|
||||
assertEquals("efg_ghi", foo("ghi"))
|
||||
|
||||
assertEquals("other", foo("xyz"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun foo(x : String) : String {
|
||||
assert("abz]".hashCode() == "aby|".hashCode())
|
||||
|
||||
when (x) {
|
||||
"abz]", "cde" -> return "abz_cde"
|
||||
"aby|", "ghi", "abz]" -> return "aby_ghi"
|
||||
}
|
||||
|
||||
return "other"
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
assertEquals("abz_cde", foo("abz]"))
|
||||
assertEquals("abz_cde", foo("cde"))
|
||||
assertEquals("aby_ghi", foo("aby|"))
|
||||
assertEquals("aby_ghi", foo("ghi"))
|
||||
|
||||
assertEquals("other", foo("xyz"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
fun foo1(x : String) : String {
|
||||
when (x) {
|
||||
"abc", "cde" -> return "abc_cde"
|
||||
"efg", "ghi" -> return "efg_ghi"
|
||||
}
|
||||
|
||||
return "other"
|
||||
}
|
||||
|
||||
fun foo2(x : String) : String {
|
||||
when (x) {
|
||||
"abc", "cde" -> return "abc_cde"
|
||||
"efg", "ghi" -> return "efg_ghi"
|
||||
else -> return "other"
|
||||
}
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
//foo1
|
||||
assertEquals("abc_cde", foo1("abc"))
|
||||
assertEquals("abc_cde", foo1("cde"))
|
||||
assertEquals("efg_ghi", foo1("efg"))
|
||||
assertEquals("efg_ghi", foo1("ghi"))
|
||||
|
||||
assertEquals("other", foo1("xyz"))
|
||||
|
||||
//foo2
|
||||
assertEquals("abc_cde", foo2("abc"))
|
||||
assertEquals("abc_cde", foo2("cde"))
|
||||
assertEquals("efg_ghi", foo2("efg"))
|
||||
assertEquals("efg_ghi", foo2("ghi"))
|
||||
|
||||
assertEquals("other", foo2("xyz"))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user