Maintain bounds evaluation order in intrinsics for 'reversed'
Makes sense for 'rangeTo', 'downTo', and 'until' with non-const bounds.
This commit is contained in:
+20
@@ -0,0 +1,20 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.test.*
|
||||
|
||||
val log = StringBuilder()
|
||||
|
||||
fun logged(message: String, value: Int) =
|
||||
value.also { log.append(message) }
|
||||
|
||||
fun box(): String {
|
||||
var s = 0
|
||||
for (i in (logged("start;", 2) downTo logged("end;", 1)).reversed()) {
|
||||
s += i
|
||||
}
|
||||
|
||||
assertEquals(3, s)
|
||||
|
||||
assertEquals("start;end;", log.toString())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.test.*
|
||||
|
||||
val log = StringBuilder()
|
||||
|
||||
fun logged(message: String, value: Int) =
|
||||
value.also { log.append(message) }
|
||||
|
||||
fun box(): String {
|
||||
var s = 0
|
||||
for (i in (logged("start;", 1) .. logged("end;", 2)).reversed()) {
|
||||
s += i
|
||||
}
|
||||
|
||||
assertEquals(3, s)
|
||||
|
||||
assertEquals("start;end;", log.toString())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.test.*
|
||||
|
||||
val log = StringBuilder()
|
||||
|
||||
fun logged(message: String, value: Int) =
|
||||
value.also { log.append(message) }
|
||||
|
||||
fun box(): String {
|
||||
var s = 0
|
||||
for (i in (logged("start;", 1) until logged("end;", 3)).reversed()) {
|
||||
s += i
|
||||
}
|
||||
|
||||
assertEquals(3, s)
|
||||
|
||||
assertEquals("start;end;", log.toString())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user