mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 00:21:47 +00:00
Intrinsics for 'reversed': support non-literal range expressions
#KT-21323 In Progress
This commit is contained in:
30
compiler/testData/codegen/bytecodeText/forLoop/forInReversed/ForInReversedReversedRange.kt
vendored
Normal file
30
compiler/testData/codegen/bytecodeText/forLoop/forInReversed/ForInReversedReversedRange.kt
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.test.*
|
||||
|
||||
fun intRange() = 1 .. 4
|
||||
fun longRange() = 1L .. 4L
|
||||
fun charRange() = '1' .. '4'
|
||||
|
||||
fun box(): String {
|
||||
var sum = 0
|
||||
for (i in intRange().reversed().reversed()) {
|
||||
sum = sum * 10 + i
|
||||
}
|
||||
assertEquals(1234, sum)
|
||||
|
||||
var sumL = 0L
|
||||
for (i in longRange().reversed().reversed()) {
|
||||
sumL = sumL * 10 + i
|
||||
}
|
||||
assertEquals(1234L, sumL)
|
||||
|
||||
var sumC = 0
|
||||
for (i in charRange().reversed().reversed()) {
|
||||
sumC = sumC * 10 + i.toInt() - '0'.toInt()
|
||||
}
|
||||
assertEquals(1234, sumC)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 reversed
|
||||
30
compiler/testData/codegen/bytecodeText/forLoop/forInReversed/forInReversedRange.kt
vendored
Normal file
30
compiler/testData/codegen/bytecodeText/forLoop/forInReversed/forInReversedRange.kt
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.test.*
|
||||
|
||||
fun intRange() = 1 .. 4
|
||||
fun longRange() = 1L .. 4L
|
||||
fun charRange() = '1' .. '4'
|
||||
|
||||
fun box(): String {
|
||||
var sum = 0
|
||||
for (i in intRange().reversed()) {
|
||||
sum = sum * 10 + i
|
||||
}
|
||||
assertEquals(4321, sum)
|
||||
|
||||
var sumL = 0L
|
||||
for (i in longRange().reversed()) {
|
||||
sumL = sumL * 10 + i
|
||||
}
|
||||
assertEquals(4321L, sumL)
|
||||
|
||||
var sumC = 0
|
||||
for (i in charRange().reversed()) {
|
||||
sumC = sumC * 10 + i.toInt() - '0'.toInt()
|
||||
}
|
||||
assertEquals(4321, sumC)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 reversed
|
||||
@@ -0,0 +1,30 @@
|
||||
// WITH_RUNTIME
|
||||
import kotlin.test.*
|
||||
|
||||
fun intRange() = 1 .. 4
|
||||
fun longRange() = 1L .. 4L
|
||||
fun charRange() = '1' .. '4'
|
||||
|
||||
fun box(): String {
|
||||
var sum = 0
|
||||
for (i in intRange().reversed().reversed().reversed()) {
|
||||
sum = sum * 10 + i
|
||||
}
|
||||
assertEquals(4321, sum)
|
||||
|
||||
var sumL = 0L
|
||||
for (i in longRange().reversed().reversed().reversed()) {
|
||||
sumL = sumL * 10 + i
|
||||
}
|
||||
assertEquals(4321L, sumL)
|
||||
|
||||
var sumC = 0
|
||||
for (i in charRange().reversed().reversed().reversed()) {
|
||||
sumC = sumC * 10 + i.toInt() - '0'.toInt()
|
||||
}
|
||||
assertEquals(4321, sumC)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 reversed
|
||||
Reference in New Issue
Block a user