Intrinsics for 'reversed': infrastructure & primitive range support

#KT-21323 In Progress
This commit is contained in:
Dmitry Petrov
2017-12-11 12:00:42 +03:00
parent 83ae34bb29
commit 1775f294f4
14 changed files with 253 additions and 1 deletions
@@ -0,0 +1,19 @@
// WITH_RUNTIME
fun box(): String {
for (i in (4 .. 1).reversed()) {
throw AssertionError("Loop should not be executed")
}
for (i in (4L .. 1L).reversed()) {
throw AssertionError("Loop should not be executed")
}
for (i in ('D' .. 'A').reversed()) {
throw AssertionError("Loop should not be executed")
}
return "OK"
}
// 0 reversed
// 0 getFirst
// 0 getLast
// 0 getStep
@@ -0,0 +1,29 @@
// WITH_RUNTIME
import kotlin.test.*
fun box(): String {
var sum = 0
for (i in (1 .. 4).reversed()) {
sum = sum * 10 + i
}
assertEquals(4321, sum)
var sumL = 0L
for (i in (1L .. 4L).reversed()) {
sumL = sumL * 10 + i
}
assertEquals(4321L, sumL)
var sumC = 0
for (i in ('1' .. '4').reversed()) {
sumC = sumC * 10 + i.toInt() - '0'.toInt()
}
assertEquals(4321, sumC)
return "OK"
}
// 0 reversed
// 0 getFirst
// 0 getLast
// 0 getStep