89 lines
1.9 KiB
Kotlin
Vendored
89 lines
1.9 KiB
Kotlin
Vendored
// KJS_WITH_FULL_RUNTIME
|
|
// EXPECTED_REACHABLE_NODES: 1692
|
|
package foo
|
|
|
|
data class A(val bar: Int)
|
|
|
|
external class B
|
|
|
|
fun makeB(): B = js("new Object();")
|
|
|
|
fun intAgainstInt(x: Int) = when (x) {
|
|
1 -> "a"
|
|
2 -> "b"
|
|
else -> "*"
|
|
}
|
|
|
|
fun intAgainstNullableInt(x: Int?) = when (x) {
|
|
1 -> "a"
|
|
2 -> "b"
|
|
null -> "c"
|
|
else -> "*"
|
|
}
|
|
|
|
fun anyAgainstInt(x: Any?) = when (x) {
|
|
1 -> "a"
|
|
2 -> "b"
|
|
else -> "*"
|
|
}
|
|
|
|
fun longAgainstLong(x: Long) = when (x) {
|
|
1L -> "a"
|
|
2L -> "b"
|
|
else -> "*"
|
|
}
|
|
|
|
fun anyAgainstLong(x: Any?) = when (x) {
|
|
1L -> "a"
|
|
2L -> "b"
|
|
null -> "c"
|
|
else -> "*"
|
|
}
|
|
|
|
fun anyAgainstAny(x: Any) = when (x) {
|
|
A(1) -> "a"
|
|
1 -> "b"
|
|
else -> "*"
|
|
}
|
|
|
|
fun dynamicAgainstPattern(x: dynamic) = when(x) {
|
|
1 -> "a"
|
|
"2" -> "b"
|
|
else -> "*"
|
|
}
|
|
|
|
fun box(): String {
|
|
assertEquals("a", intAgainstInt(1))
|
|
assertEquals("b", intAgainstInt(2))
|
|
assertEquals("*", intAgainstInt(23))
|
|
|
|
assertEquals("a", intAgainstNullableInt(1))
|
|
assertEquals("b", intAgainstNullableInt(2))
|
|
assertEquals("c", intAgainstNullableInt(null))
|
|
assertEquals("*", intAgainstNullableInt(23))
|
|
|
|
assertEquals("a", anyAgainstInt(1))
|
|
assertEquals("b", anyAgainstInt(2))
|
|
assertEquals("*", anyAgainstInt(A(23)))
|
|
|
|
assertEquals("a", longAgainstLong(1))
|
|
assertEquals("b", longAgainstLong(2))
|
|
assertEquals("*", longAgainstLong(23))
|
|
|
|
assertEquals("a", anyAgainstLong(1L))
|
|
assertEquals("b", anyAgainstLong(2L))
|
|
assertEquals("c", anyAgainstLong(null))
|
|
assertEquals("*", anyAgainstLong(A(23)))
|
|
|
|
assertEquals("a", anyAgainstAny(A(1)))
|
|
assertEquals("b", anyAgainstAny(1))
|
|
assertEquals("*", anyAgainstAny(listOf(1)))
|
|
|
|
assertEquals("a", dynamicAgainstPattern(1))
|
|
assertEquals("a", dynamicAgainstPattern(js("1")))
|
|
assertEquals("b", dynamicAgainstPattern("2"))
|
|
assertEquals("b", dynamicAgainstPattern(js("'2'")))
|
|
assertEquals("*", dynamicAgainstPattern(js("{}")))
|
|
|
|
return "OK"
|
|
} |