'when' should use intrinsics for '=='

#KT-19029 Fixed Target versions 1.1.5
 #KT-18818 Fixed Target versions 1.1.5
This commit is contained in:
Dmitry Petrov
2017-07-17 14:43:37 +03:00
parent 20cd748377
commit 2ed5a5e368
13 changed files with 281 additions and 51 deletions

View File

@@ -0,0 +1,14 @@
// WITH_RUNTIME
fun findUserId(username: String): Long? = null
fun main(args: Array<String>) {
val userId = findUserId("abcd")
when (userId) {
null -> println("User not found")
else -> println("User ID: $userId")
}
}
// 0 areEqual

View File

@@ -0,0 +1,27 @@
// FILE: C.kt
class CInt(val value: Int)
val nCInt3: CInt? = CInt(3)
class CLong(val value: Long)
val nCLong3: CLong? = CLong(3)
// FILE: test.kt
fun testInt(i: Int?) =
when (i) {
0 -> "zero"
42 -> "magic"
else -> "other"
}
fun testLong(i: Long?) =
when (i) {
0L -> "zero"
42L -> "magic"
else -> "other"
}
// @TestKt.class:
// 0 valueOf
// 0 Integer.valueOf
// 0 Long.valueOf
// 0 areEqual

View File

@@ -0,0 +1,10 @@
fun test(a: Any?, b: Any?, c: Any?) {
when (null) {
a -> throw IllegalArgumentException("a is null")
b -> throw IllegalArgumentException("b is null")
c -> throw IllegalArgumentException("c is null")
}
}
// 0 areEqual
// 3 IFNONNULL

View File

@@ -0,0 +1,10 @@
fun test(a: Int, b: Int, c: Int) {
when (0) {
a -> throw IllegalArgumentException("a is 0")
b -> throw IllegalArgumentException("b is 0")
c -> throw IllegalArgumentException("c is 0")
}
}
// 0 IF_ICMPNE
// 3 IFNE