Tests for for-in optimization with unsigned ranges

This commit is contained in:
Dmitry Petrov
2019-01-09 11:23:14 +03:00
parent a2c618366b
commit e6e0e9976c
3 changed files with 63 additions and 0 deletions
@@ -0,0 +1,53 @@
// IGNORE_BACKEND: JVM_IR
fun testUIntRangeLiteral(a: UInt, b: UInt): Int {
var s = 0
for (x in a .. b) {
s += x.toInt()
}
return s
}
fun testULongRangeLiteral(a: ULong, b: ULong): Int {
var s = 0
for (x in a .. b) {
s += x.toInt()
}
return s
}
fun testUIntUntil(a: UInt, b: UInt): Int {
var s = 0
for (x in a until b) {
s += x.toInt()
}
return s
}
fun testULongUntil(a: ULong, b: ULong): Int {
var s = 0
for (x in a until b) {
s += x.toInt()
}
return s
}
fun testUIntDownTo(a: UInt, b: UInt): Int {
var s = 0
for (x in a downTo b) {
s += x.toInt()
}
return s
}
fun testULongDownTo(a: ULong, b: ULong): Int {
var s = 0
for (x in a downTo b) {
s += x.toInt()
}
return s
}
// 0 iterator
// 0 hasNext
// 0 next
@@ -1471,6 +1471,11 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
runTest("compiler/testData/codegen/bytecodeText/forLoop/forInCharSequence.kt");
}
@TestMetadata("forInOptimizableUnsignedRange.kt")
public void testForInOptimizableUnsignedRange() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/forLoop/forInOptimizableUnsignedRange.kt");
}
@TestMetadata("forInRangeSpecializedToUntil.kt")
public void testForInRangeSpecializedToUntil() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/forLoop/forInRangeSpecializedToUntil.kt");
@@ -1471,6 +1471,11 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest {
runTest("compiler/testData/codegen/bytecodeText/forLoop/forInCharSequence.kt");
}
@TestMetadata("forInOptimizableUnsignedRange.kt")
public void testForInOptimizableUnsignedRange() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/forLoop/forInOptimizableUnsignedRange.kt");
}
@TestMetadata("forInRangeSpecializedToUntil.kt")
public void testForInRangeSpecializedToUntil() throws Exception {
runTest("compiler/testData/codegen/bytecodeText/forLoop/forInRangeSpecializedToUntil.kt");