Files
kotlin-fork/compiler/testData/codegen/box/ranges/forInRangeWithUpperBoundMinus1.kt
T

227 lines
7.4 KiB
Kotlin
Vendored

// TARGET_BACKEND: JVM_IR
// WITH_STDLIB
fun box(): String {
noUnderflow()
testByteArray()
testCharArray()
testShortArray()
testIntArray()
testLongArray()
testFloatArray()
testDoubleArray()
testBooleanArray()
testEmptyList()
testList()
testMutableList()
testCharSequence()
testString()
testEmptySet()
testSet()
testMutableSet()
testEmptyMap()
testMap()
testMutableMap()
return "OK"
}
fun noUnderflow() {
val M1 = Int.MAX_VALUE - 2
val M2 = Int.MIN_VALUE
var t = 0
for (x in M1..M2 - 1) {
++t
assert(t <= 3) { "Failed: too many iterations" }
}
assert(t == 3) { "Failed: t=$t" }
}
fun testByteArray() {
val array = byteArrayOf(1, 2, 3)
val range = array.size - 1
var optimized = 0
var nonOptimized = 0
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testCharArray() {
val array = charArrayOf('1', '2', '3')
val range = array.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testShortArray() {
val array = shortArrayOf(1, 2, 3)
val range = array.size - 1
var optimized = 0
var nonOptimized = 0
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testIntArray() {
val array = intArrayOf(1, 2, 3)
val range = array.size - 1
var optimized = 0
var nonOptimized = 0
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testLongArray() {
val array = longArrayOf(1, 2, 3)
val range = array.size - 1
var optimized = 0L
var nonOptimized = 0L
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testFloatArray() {
val array = floatArrayOf(1f, 2f, 3f)
val range = array.size - 1
var optimized = 0f
var nonOptimized = 0f
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testDoubleArray() {
val array = doubleArrayOf(1.0, 2.0, 3.0)
val range = array.size - 1
var optimized = 0.0
var nonOptimized = 0.0
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testBooleanArray() {
val array = booleanArrayOf(true, false, true)
val range = array.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..array.size - 1) optimized += array[i]
for (i in 0..range) nonOptimized += array[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testEmptyList() {
val list = emptyList<Int>()
val range = list.size - 1
var optimized = 0
var nonOptimized = 0
for (i in 0..list.size - 1) optimized += list[i]
for (i in 0..range) nonOptimized += list[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testList() {
val list = listOf(1, 2, 3)
val range = list.size - 1
var optimized = 0
var nonOptimized = 0
for (i in 0..list.size - 1) optimized += list[i]
for (i in 0..range) nonOptimized += list[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testMutableList() {
val list = mutableListOf(1, 2, 3)
val range = list.size - 1
var optimized = 0
var nonOptimized = 0
for (i in 0..list.size - 1) optimized += list[i]
for (i in 0..range) nonOptimized += list[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testCharSequence() {
val chars: CharSequence = "123"
val range = chars.length - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..chars.length - 1) optimized += chars[i]
for (i in 0..range) nonOptimized += chars[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testString() {
val str = "123"
val range = str.length - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..str.length - 1) optimized += str[i]
for (i in 0..range) nonOptimized += str[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testEmptySet() {
val set = emptySet<Int>()
val range = set.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..set.size - 1) optimized += set.elementAt(i)
for (i in 0..range) nonOptimized += set.elementAt(i)
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testSet() {
val set = setOf(1, 2, 3)
val range = set.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..set.size - 1) optimized += set.elementAt(i)
for (i in 0..range) nonOptimized += set.elementAt(i)
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testMutableSet() {
val set = mutableSetOf(1, 2, 3)
val range = set.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..set.size - 1) optimized += set.elementAt(i)
for (i in 0..range) nonOptimized += set.elementAt(i)
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testEmptyMap() {
val map = emptyMap<Int, Int>()
val range = map.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..map.size - 1) optimized += map[i]
for (i in 0..range) nonOptimized += map[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testMap() {
val map = mapOf(1 to 1, 2 to 2, 3 to 3)
val range = map.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..map.size - 1) optimized += map[i]
for (i in 0..range) nonOptimized += map[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}
fun testMutableMap() {
val map = mutableMapOf(1 to 1, 2 to 2, 3 to 3)
val range = map.size - 1
var optimized = ""
var nonOptimized = ""
for (i in 0..map.size - 1) optimized += map[i]
for (i in 0..range) nonOptimized += map[i]
assert(optimized == nonOptimized) { "optimized($optimized) and nonOptimized($nonOptimized) should be equal" }
}