KT-6916: do not create Progression instances in for-in-downTo loops

This commit is contained in:
Dmitry Petrov
2016-07-01 12:26:20 +03:00
parent e187f799d9
commit bf4f26318e
10 changed files with 183 additions and 10 deletions
@@ -0,0 +1,13 @@
// WITH_RUNTIME
import kotlin.test.assertEquals
fun box(): String {
var sum = 0
for (i in 4 downTo 1) {
sum = sum * 10 + i
}
assertEquals(4321, sum)
return "OK"
}
@@ -0,0 +1,14 @@
// WITH_RUNTIME
import kotlin.test.assertEquals
fun box(): String {
var sum = 0
val dt = 4 downTo 1
for (i in dt) {
sum = sum * 10 + i
}
assertEquals(4321, sum)
return "OK"
}
@@ -0,0 +1,13 @@
// WITH_RUNTIME
import kotlin.test.assertEquals
fun box(): String {
var sum = 0L
for (i in 4L downTo 1L) {
sum = sum * 10L + i
}
assertEquals(4321L, sum)
return "OK"
}
@@ -0,0 +1,13 @@
// WITH_RUNTIME
import kotlin.test.assertEquals
fun box(): String {
var sum = 0
for (i: Int? in 4 downTo 1) {
sum = sum * 10 + (i ?: 0)
}
assertEquals(4321, sum)
return "OK"
}