Handle equality checks for 'when' and data classes
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user