34 lines
979 B
Kotlin
Vendored
34 lines
979 B
Kotlin
Vendored
// EXPECTED_REACHABLE_NODES: 1417
|
|
// see KT-7683
|
|
// WhenTranslator must recognize KtWhenConditionInRange and produce faster code when matched expression is Int
|
|
package foo
|
|
|
|
fun box(): String {
|
|
var result = testFun(-1) + testFun(0) + testFun(5) + testFun(9) + testFun(10) + testFun(150) + testFun(800)
|
|
if (result != "misshithithitmisshit!@@@" || invocationCount != 7) return "fail1:" + result
|
|
result = testFun2(-1) + testFun2(0) + testFun2(9) + testFun2(10)
|
|
if (result != "hitmissmisshit") return "fail2:" + result
|
|
return "OK"
|
|
}
|
|
fun testFun(index: Int): String {
|
|
val thirdRange = 500..1000
|
|
return when (get(index)) {
|
|
in 0..9 -> "hit"
|
|
in 100.rangeTo(200) -> "hit!"
|
|
in thirdRange -> "@@@"
|
|
else -> "miss"
|
|
}
|
|
}
|
|
fun testFun2(index: Int): String {
|
|
return when(index) {
|
|
!in 0..9 -> "hit"
|
|
else -> "miss"
|
|
}
|
|
}
|
|
|
|
fun get(value: Int): Int {
|
|
invocationCount++
|
|
return value
|
|
}
|
|
var invocationCount = 0
|