48 lines
928 B
Kotlin
Vendored
48 lines
928 B
Kotlin
Vendored
fun testSimple(x: Double) =
|
|
when (x) {
|
|
0.0 -> 0
|
|
else -> 1
|
|
}
|
|
|
|
fun testSmartCastInWhenSubject(x: Any): Int {
|
|
if (x !is Double) return -1
|
|
return when (x) {
|
|
0.0 -> 0
|
|
else -> 1
|
|
}
|
|
}
|
|
|
|
fun testSmartCastInWhenCondition(x: Double, y: Any): Int {
|
|
if (y !is Double) return -1
|
|
return when (x) {
|
|
y -> 0
|
|
else -> 1
|
|
}
|
|
}
|
|
|
|
fun testSmartCastInWhenConditionInBranch(x: Any) =
|
|
when (x) {
|
|
!is Double -> -1
|
|
0.0 -> 0
|
|
else -> 1
|
|
}
|
|
|
|
fun testSmartCastToDifferentTypes(x: Any, y: Any): Int {
|
|
if (x !is Double) return -1
|
|
if (y !is Float) return -1
|
|
return when (x) {
|
|
y -> 0
|
|
else -> 1
|
|
}
|
|
}
|
|
|
|
fun foo(x: Double) = x
|
|
|
|
fun testWithPrematureExitInConditionSubexpression(x: Any): Int {
|
|
return when (x) {
|
|
foo(
|
|
if (x !is Double) return 42 else x
|
|
) -> 0
|
|
else -> 1
|
|
}
|
|
} |