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"
}
@@ -0,0 +1,15 @@
// WITH_RUNTIME
fun test(): Int {
var sum = 0
for (i in 4 downTo 1) {
sum = sum * 10 + i
}
return sum
}
// 0 iterator
// 0 getStart
// 0 getEnd
// 0 getFirst
// 0 getLast
@@ -1,7 +1,8 @@
fun f() {
for (i in 0..5 step 2) {
}
for (i in 5 downTo 1) {
for (i in 5 downTo 1 step 1) { // suppress optimized code generation for 'for-in-downTo'
}
}