diff --git a/compiler/testData/codegen/ranges/expression/emptyDownto.kt b/compiler/testData/codegen/ranges/expression/emptyDownto.kt new file mode 100644 index 00000000000..9c10f9bebe9 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/emptyDownto.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 5 downTo 10 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for 5 downTo 10: $list1" + } + + val list2 = ArrayList() + val range2 = 5.toByte() downTo 10.toByte() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for 5.toByte() downTo 10.toByte(): $list2" + } + + val list3 = ArrayList() + val range3 = 5.toShort() downTo 10.toShort() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for 5.toShort() downTo 10.toShort(): $list3" + } + + val list4 = ArrayList() + val range4 = 5.toLong() downTo 10.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for 5.toLong() downTo 10.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'a' downTo 'z' + for (i in range5) { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for 'a' downTo 'z': $list5" + } + + val list6 = ArrayList() + val range6 = -1.0 downTo 5.0 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for -1.0 downTo 5.0: $list6" + } + + val list7 = ArrayList() + val range7 = -1.0.toFloat() downTo 5.0.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for -1.0.toFloat() downTo 5.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/emptyRange.kt b/compiler/testData/codegen/ranges/expression/emptyRange.kt new file mode 100644 index 00000000000..96c4d954863 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/emptyRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 10..5 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for 10..5: $list1" + } + + val list2 = ArrayList() + val range2 = 10.toByte()..-5.toByte() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for 10.toByte()..-5.toByte(): $list2" + } + + val list3 = ArrayList() + val range3 = 10.toShort()..-5.toShort() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for 10.toShort()..-5.toShort(): $list3" + } + + val list4 = ArrayList() + val range4 = 10.toLong()..-5.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for 10.toLong()..-5.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'z'..'a' + for (i in range5) { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for 'z'..'a': $list5" + } + + val list6 = ArrayList() + val range6 = 5.0..-1.0 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for 5.0..-1.0: $list6" + } + + val list7 = ArrayList() + val range7 = 5.0.toFloat()..-1.0.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for 5.0.toFloat()..-1.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/inexactSteppedDownTo.kt b/compiler/testData/codegen/ranges/expression/inexactSteppedDownTo.kt new file mode 100644 index 00000000000..44ece5ccf1e --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/inexactSteppedDownTo.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 8 downTo 3 step 2 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(8, 6, 4)) { + return "Wrong elements for 8 downTo 3 step 2: $list1" + } + + val list2 = ArrayList() + val range2 = 8.toByte() downTo 3.toByte() step 2 + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(8, 6, 4)) { + return "Wrong elements for 8.toByte() downTo 3.toByte() step 2: $list2" + } + + val list3 = ArrayList() + val range3 = 8.toShort() downTo 3.toShort() step 2 + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(8, 6, 4)) { + return "Wrong elements for 8.toShort() downTo 3.toShort() step 2: $list3" + } + + val list4 = ArrayList() + val range4 = 8.toLong() downTo 3.toLong() step 2.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(8, 6, 4)) { + return "Wrong elements for 8.toLong() downTo 3.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'd' downTo 'a' step 2 + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('d', 'b')) { + return "Wrong elements for 'd' downTo 'a' step 2: $list5" + } + + val list6 = ArrayList() + val range6 = 5.5 downTo 3.7 step 0.5 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 5.5 downTo 3.7 step 0.5: $list6" + } + + val list7 = ArrayList() + val range7 = 5.5.toFloat() downTo 3.7.toFloat() step 0.5.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 5.5.toFloat() downTo 3.7.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/inexactSteppedRange.kt b/compiler/testData/codegen/ranges/expression/inexactSteppedRange.kt new file mode 100644 index 00000000000..2b3de3cb580 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/inexactSteppedRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 3..8 step 2 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(3, 5, 7)) { + return "Wrong elements for 3..8 step 2: $list1" + } + + val list2 = ArrayList() + val range2 = 3.toByte()..8.toByte() step 2 + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(3, 5, 7)) { + return "Wrong elements for 3.toByte()..8.toByte() step 2: $list2" + } + + val list3 = ArrayList() + val range3 = 3.toShort()..8.toShort() step 2 + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(3, 5, 7)) { + return "Wrong elements for 3.toShort()..8.toShort() step 2: $list3" + } + + val list4 = ArrayList() + val range4 = 3.toLong()..8.toLong() step 2.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(3, 5, 7)) { + return "Wrong elements for 3.toLong()..8.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'a'..'d' step 2 + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('a', 'c')) { + return "Wrong elements for 'a'..'d' step 2: $list5" + } + + val list6 = ArrayList() + val range6 = 4.0..5.8 step 0.5 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for 4.0..5.8 step 0.5: $list6" + } + + val list7 = ArrayList() + val range7 = 4.0.toFloat()..5.8.toFloat() step 0.5.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for 4.0.toFloat()..5.8.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/oneElementDownTo.kt b/compiler/testData/codegen/ranges/expression/oneElementDownTo.kt new file mode 100644 index 00000000000..234745b63ef --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/oneElementDownTo.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 5 downTo 5 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(5)) { + return "Wrong elements for 5 downTo 5: $list1" + } + + val list2 = ArrayList() + val range2 = 5.toByte() downTo 5.toByte() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(5.toByte())) { + return "Wrong elements for 5.toByte() downTo 5.toByte(): $list2" + } + + val list3 = ArrayList() + val range3 = 5.toShort() downTo 5.toShort() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(5.toShort())) { + return "Wrong elements for 5.toShort() downTo 5.toShort(): $list3" + } + + val list4 = ArrayList() + val range4 = 5.toLong() downTo 5.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(5.toLong())) { + return "Wrong elements for 5.toLong() downTo 5.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'k' downTo 'k' + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('k')) { + return "Wrong elements for 'k' downTo 'k': $list5" + } + + val list6 = ArrayList() + val range6 = 5.0 downTo 5.0 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(5.0)) { + return "Wrong elements for 5.0 downTo 5.0: $list6" + } + + val list7 = ArrayList() + val range7 = 5.0.toFloat() downTo 5.0.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(5.0.toFloat())) { + return "Wrong elements for 5.0.toFloat() downTo 5.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/oneElementRange.kt b/compiler/testData/codegen/ranges/expression/oneElementRange.kt new file mode 100644 index 00000000000..4a9bab2bb97 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/oneElementRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 5..5 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(5)) { + return "Wrong elements for 5..5: $list1" + } + + val list2 = ArrayList() + val range2 = 5.toByte()..5.toByte() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(5.toByte())) { + return "Wrong elements for 5.toByte()..5.toByte(): $list2" + } + + val list3 = ArrayList() + val range3 = 5.toShort()..5.toShort() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(5.toShort())) { + return "Wrong elements for 5.toShort()..5.toShort(): $list3" + } + + val list4 = ArrayList() + val range4 = 5.toLong()..5.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(5.toLong())) { + return "Wrong elements for 5.toLong()..5.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'k'..'k' + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('k')) { + return "Wrong elements for 'k'..'k': $list5" + } + + val list6 = ArrayList() + val range6 = 5.0..5.0 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(5.0)) { + return "Wrong elements for 5.0..5.0: $list6" + } + + val list7 = ArrayList() + val range7 = 5.0.toFloat()..5.0.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(5.0.toFloat())) { + return "Wrong elements for 5.0.toFloat()..5.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/reversedBackSequence.kt b/compiler/testData/codegen/ranges/expression/reversedBackSequence.kt new file mode 100644 index 00000000000..de959abc5d8 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/reversedBackSequence.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = (5 downTo 3).reversed() + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(3, 4, 5)) { + return "Wrong elements for (5 downTo 3).reversed(): $list1" + } + + val list2 = ArrayList() + val range2 = (5.toByte() downTo 3.toByte()).reversed() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(3, 4, 5)) { + return "Wrong elements for (5.toByte() downTo 3.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + val range3 = (5.toShort() downTo 3.toShort()).reversed() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(3, 4, 5)) { + return "Wrong elements for (5.toShort() downTo 3.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + val range4 = (5.toLong() downTo 3.toLong()).reversed() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(3, 4, 5)) { + return "Wrong elements for (5.toLong() downTo 3.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + val range5 = ('c' downTo 'a').reversed() + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('a', 'b', 'c')) { + return "Wrong elements for ('c' downTo 'a').reversed(): $list5" + } + + val list6 = ArrayList() + val range6 = (5.0 downTo 3.0).reversed() + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(3.0, 4.0, 5.0)) { + return "Wrong elements for (5.0 downTo 3.0).reversed(): $list6" + } + + val list7 = ArrayList() + val range7 = (5.0.toFloat() downTo 3.0.toFloat()).reversed() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(3.0, 4.0, 5.0)) { + return "Wrong elements for (5.0.toFloat() downTo 3.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/reversedEmptyBackSequence.kt b/compiler/testData/codegen/ranges/expression/reversedEmptyBackSequence.kt new file mode 100644 index 00000000000..d2ed48ef501 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/reversedEmptyBackSequence.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = (3 downTo 5).reversed() + for (i in range1) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for (3 downTo 5).reversed(): $list1" + } + + val list2 = ArrayList() + val range2 = (3.toByte() downTo 5.toByte()).reversed() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for (3.toByte() downTo 5.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + val range3 = (3.toShort() downTo 5.toShort()).reversed() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for (3.toShort() downTo 5.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + val range4 = (3.toLong() downTo 5.toLong()).reversed() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for (3.toLong() downTo 5.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + val range5 = ('a' downTo 'c').reversed() + for (i in range5) { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for ('a' downTo 'c').reversed(): $list5" + } + + val list6 = ArrayList() + val range6 = (3.0 downTo 5.0).reversed() + for (i in range6) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for (3.0 downTo 5.0).reversed(): $list6" + } + + val list7 = ArrayList() + val range7 = (3.0.toFloat() downTo 5.0.toFloat()).reversed() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for (3.0.toFloat() downTo 5.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/reversedEmptyRange.kt b/compiler/testData/codegen/ranges/expression/reversedEmptyRange.kt new file mode 100644 index 00000000000..99042886f24 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/reversedEmptyRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = (5..3).reversed() + for (i in range1) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for (5..3).reversed(): $list1" + } + + val list2 = ArrayList() + val range2 = (5.toByte()..3.toByte()).reversed() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for (5.toByte()..3.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + val range3 = (5.toShort()..3.toShort()).reversed() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for (5.toShort()..3.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + val range4 = (5.toLong()..3.toLong()).reversed() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for (5.toLong()..3.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + val range5 = ('c'..'a').reversed() + for (i in range5) { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for ('c'..'a').reversed(): $list5" + } + + val list6 = ArrayList() + val range6 = (5.0..3.0).reversed() + for (i in range6) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for (5.0..3.0).reversed(): $list6" + } + + val list7 = ArrayList() + val range7 = (5.0.toFloat()..3.0.toFloat()).reversed() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for (5.0.toFloat()..3.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/reversedInexactSteppedDownTo.kt b/compiler/testData/codegen/ranges/expression/reversedInexactSteppedDownTo.kt new file mode 100644 index 00000000000..92b6886dcde --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/reversedInexactSteppedDownTo.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = (8 downTo 3 step 2).reversed() + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(3, 5, 7)) { + return "Wrong elements for (8 downTo 3 step 2).reversed(): $list1" + } + + val list2 = ArrayList() + val range2 = (8.toByte() downTo 3.toByte() step 2).reversed() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(3, 5, 7)) { + return "Wrong elements for (8.toByte() downTo 3.toByte() step 2).reversed(): $list2" + } + + val list3 = ArrayList() + val range3 = (8.toShort() downTo 3.toShort() step 2).reversed() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(3, 5, 7)) { + return "Wrong elements for (8.toShort() downTo 3.toShort() step 2).reversed(): $list3" + } + + val list4 = ArrayList() + val range4 = (8.toLong() downTo 3.toLong() step 2.toLong()).reversed() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(3, 5, 7)) { + return "Wrong elements for (8.toLong() downTo 3.toLong() step 2.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + val range5 = ('d' downTo 'a' step 2).reversed() + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('a', 'c')) { + return "Wrong elements for ('d' downTo 'a' step 2).reversed(): $list5" + } + + val list6 = ArrayList() + val range6 = (5.8 downTo 4.0 step 0.5).reversed() + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for (5.8 downTo 4.0 step 0.5).reversed(): $list6" + } + + val list7 = ArrayList() + val range7 = (5.8.toFloat() downTo 4.0.toFloat() step 0.5).reversed() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for (5.8.toFloat() downTo 4.0.toFloat() step 0.5).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/reversedRange.kt b/compiler/testData/codegen/ranges/expression/reversedRange.kt new file mode 100644 index 00000000000..2b3f6b40d82 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/reversedRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = (3..5).reversed() + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(5, 4, 3)) { + return "Wrong elements for (3..5).reversed(): $list1" + } + + val list2 = ArrayList() + val range2 = (3.toByte()..5.toByte()).reversed() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(5, 4, 3)) { + return "Wrong elements for (3.toByte()..5.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + val range3 = (3.toShort()..5.toShort()).reversed() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(5, 4, 3)) { + return "Wrong elements for (3.toShort()..5.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + val range4 = (3.toLong()..5.toLong()).reversed() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(5, 4, 3)) { + return "Wrong elements for (3.toLong()..5.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + val range5 = ('a'..'c').reversed() + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('c', 'b', 'a')) { + return "Wrong elements for ('a'..'c').reversed(): $list5" + } + + val list6 = ArrayList() + val range6 = (3.0..5.0).reversed() + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(5.0, 4.0, 3.0)) { + return "Wrong elements for (3.0..5.0).reversed(): $list6" + } + + val list7 = ArrayList() + val range7 = (3.0.toFloat()..5.0.toFloat()).reversed() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(5.0, 4.0, 3.0)) { + return "Wrong elements for (3.0.toFloat()..5.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/reversedSimpleSteppedRange.kt b/compiler/testData/codegen/ranges/expression/reversedSimpleSteppedRange.kt new file mode 100644 index 00000000000..d5ad7586dc1 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/reversedSimpleSteppedRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = (3..9 step 2).reversed() + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3..9 step 2).reversed(): $list1" + } + + val list2 = ArrayList() + val range2 = (3.toByte()..9.toByte() step 2).reversed() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3.toByte()..9.toByte() step 2).reversed(): $list2" + } + + val list3 = ArrayList() + val range3 = (3.toShort()..9.toShort() step 2).reversed() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3.toShort()..9.toShort() step 2).reversed(): $list3" + } + + val list4 = ArrayList() + val range4 = (3.toLong()..9.toLong() step 2.toLong()).reversed() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3.toLong()..9.toLong() step 2.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + val range5 = ('c'..'g' step 2).reversed() + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('g', 'e', 'c')) { + return "Wrong elements for ('c'..'g' step 2).reversed(): $list5" + } + + val list6 = ArrayList() + val range6 = (4.0..6.0 step 0.5).reversed() + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for (4.0..6.0 step 0.5).reversed(): $list6" + } + + val list7 = ArrayList() + val range7 = (4.0.toFloat()..6.0.toFloat() step 0.5).reversed() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for (4.0.toFloat()..6.0.toFloat() step 0.5).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/simpleDownTo.kt b/compiler/testData/codegen/ranges/expression/simpleDownTo.kt new file mode 100644 index 00000000000..845819b2582 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/simpleDownTo.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 9 downTo 3 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9 downTo 3: $list1" + } + + val list2 = ArrayList() + val range2 = 9.toByte() downTo 3.toByte() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9.toByte() downTo 3.toByte(): $list2" + } + + val list3 = ArrayList() + val range3 = 9.toShort() downTo 3.toShort() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9.toShort() downTo 3.toShort(): $list3" + } + + val list4 = ArrayList() + val range4 = 9.toLong() downTo 3.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9.toLong() downTo 3.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'g' downTo 'c' + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('g', 'f', 'e', 'd', 'c')) { + return "Wrong elements for 'g' downTo 'c': $list5" + } + + val list6 = ArrayList() + val range6 = 9.0 downTo 3.0 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0)) { + return "Wrong elements for 9.0 downTo 3.0: $list6" + } + + val list7 = ArrayList() + val range7 = 9.0.toFloat() downTo 3.0.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0)) { + return "Wrong elements for 9.0.toFloat() downTo 3.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/simpleRange.kt b/compiler/testData/codegen/ranges/expression/simpleRange.kt new file mode 100644 index 00000000000..2219b20af17 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/simpleRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 3..9 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3..9: $list1" + } + + val list2 = ArrayList() + val range2 = 3.toByte()..9.toByte() + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3.toByte()..9.toByte(): $list2" + } + + val list3 = ArrayList() + val range3 = 3.toShort()..9.toShort() + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3.toShort()..9.toShort(): $list3" + } + + val list4 = ArrayList() + val range4 = 3.toLong()..9.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3.toLong()..9.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'c'..'g' + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('c', 'd', 'e', 'f', 'g')) { + return "Wrong elements for 'c'..'g': $list5" + } + + val list6 = ArrayList() + val range6 = 3.0..9.0 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)) { + return "Wrong elements for 3.0..9.0: $list6" + } + + val list7 = ArrayList() + val range7 = 3.0.toFloat()..9.0.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)) { + return "Wrong elements for 3.0.toFloat()..9.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/simpleSteppedDownTo.kt b/compiler/testData/codegen/ranges/expression/simpleSteppedDownTo.kt new file mode 100644 index 00000000000..03dad311cde --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/simpleSteppedDownTo.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 9 downTo 3 step 2 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9 downTo 3 step 2: $list1" + } + + val list2 = ArrayList() + val range2 = 9.toByte() downTo 3.toByte() step 2 + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9.toByte() downTo 3.toByte() step 2: $list2" + } + + val list3 = ArrayList() + val range3 = 9.toShort() downTo 3.toShort() step 2 + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9.toShort() downTo 3.toShort() step 2: $list3" + } + + val list4 = ArrayList() + val range4 = 9.toLong() downTo 3.toLong() step 2.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9.toLong() downTo 3.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'g' downTo 'c' step 2 + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('g', 'e', 'c')) { + return "Wrong elements for 'g' downTo 'c' step 2: $list5" + } + + val list6 = ArrayList() + val range6 = 6.0 downTo 4.0 step 0.5 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 6.0 downTo 4.0 step 0.5: $list6" + } + + val list7 = ArrayList() + val range7 = 6.0.toFloat() downTo 4.0.toFloat() step 0.5.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 6.0.toFloat() downTo 4.0.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/expression/simpleSteppedRange.kt b/compiler/testData/codegen/ranges/expression/simpleSteppedRange.kt new file mode 100644 index 00000000000..b098640ac19 --- /dev/null +++ b/compiler/testData/codegen/ranges/expression/simpleSteppedRange.kt @@ -0,0 +1,69 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + val range1 = 3..9 step 2 + for (i in range1) { + list1.add(i) + } + if (list1 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3..9 step 2: $list1" + } + + val list2 = ArrayList() + val range2 = 3.toByte()..9.toByte() step 2 + for (i in range2) { + list2.add(i) + } + if (list2 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3.toByte()..9.toByte() step 2: $list2" + } + + val list3 = ArrayList() + val range3 = 3.toShort()..9.toShort() step 2 + for (i in range3) { + list3.add(i) + } + if (list3 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3.toShort()..9.toShort() step 2: $list3" + } + + val list4 = ArrayList() + val range4 = 3.toLong()..9.toLong() step 2.toLong() + for (i in range4) { + list4.add(i) + } + if (list4 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3.toLong()..9.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + val range5 = 'c'..'g' step 2 + for (i in range5) { + list5.add(i) + } + if (list5 != listOf('c', 'e', 'g')) { + return "Wrong elements for 'c'..'g' step 2: $list5" + } + + val list6 = ArrayList() + val range6 = 4.0..6.0 step 0.5 + for (i in range6) { + list6.add(i) + } + if (list6 != listOf(4.0, 4.5, 5.0, 5.5, 6.0)) { + return "Wrong elements for 4.0..6.0 step 0.5: $list6" + } + + val list7 = ArrayList() + val range7 = 4.0.toFloat()..6.0.toFloat() step 0.5.toFloat() + for (i in range7) { + list7.add(i) + } + if (list7 != listOf(4.0, 4.5, 5.0, 5.5, 6.0)) { + return "Wrong elements for 4.0.toFloat()..6.0.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/emptyDownto.kt b/compiler/testData/codegen/ranges/literal/emptyDownto.kt new file mode 100644 index 00000000000..7cde118ab03 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/emptyDownto.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 5 downTo 10) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for 5 downTo 10: $list1" + } + + val list2 = ArrayList() + for (i in 5.toByte() downTo 10.toByte()) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for 5.toByte() downTo 10.toByte(): $list2" + } + + val list3 = ArrayList() + for (i in 5.toShort() downTo 10.toShort()) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for 5.toShort() downTo 10.toShort(): $list3" + } + + val list4 = ArrayList() + for (i in 5.toLong() downTo 10.toLong()) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for 5.toLong() downTo 10.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'a' downTo 'z') { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for 'a' downTo 'z': $list5" + } + + val list6 = ArrayList() + for (i in -1.0 downTo 5.0) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for -1.0 downTo 5.0: $list6" + } + + val list7 = ArrayList() + for (i in -1.0.toFloat() downTo 5.0.toFloat()) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for -1.0.toFloat() downTo 5.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/emptyRange.kt b/compiler/testData/codegen/ranges/literal/emptyRange.kt new file mode 100644 index 00000000000..a1c6f4388bf --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/emptyRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 10..5) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for 10..5: $list1" + } + + val list2 = ArrayList() + for (i in 10.toByte()..-5.toByte()) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for 10.toByte()..-5.toByte(): $list2" + } + + val list3 = ArrayList() + for (i in 10.toShort()..-5.toShort()) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for 10.toShort()..-5.toShort(): $list3" + } + + val list4 = ArrayList() + for (i in 10.toLong()..-5.toLong()) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for 10.toLong()..-5.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'z'..'a') { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for 'z'..'a': $list5" + } + + val list6 = ArrayList() + for (i in 5.0..-1.0) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for 5.0..-1.0: $list6" + } + + val list7 = ArrayList() + for (i in 5.0.toFloat()..-1.0.toFloat()) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for 5.0.toFloat()..-1.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/inexactSteppedDownTo.kt b/compiler/testData/codegen/ranges/literal/inexactSteppedDownTo.kt new file mode 100644 index 00000000000..6c21d6b4634 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/inexactSteppedDownTo.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 8 downTo 3 step 2) { + list1.add(i) + } + if (list1 != listOf(8, 6, 4)) { + return "Wrong elements for 8 downTo 3 step 2: $list1" + } + + val list2 = ArrayList() + for (i in 8.toByte() downTo 3.toByte() step 2) { + list2.add(i) + } + if (list2 != listOf(8, 6, 4)) { + return "Wrong elements for 8.toByte() downTo 3.toByte() step 2: $list2" + } + + val list3 = ArrayList() + for (i in 8.toShort() downTo 3.toShort() step 2) { + list3.add(i) + } + if (list3 != listOf(8, 6, 4)) { + return "Wrong elements for 8.toShort() downTo 3.toShort() step 2: $list3" + } + + val list4 = ArrayList() + for (i in 8.toLong() downTo 3.toLong() step 2.toLong()) { + list4.add(i) + } + if (list4 != listOf(8, 6, 4)) { + return "Wrong elements for 8.toLong() downTo 3.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'd' downTo 'a' step 2) { + list5.add(i) + } + if (list5 != listOf('d', 'b')) { + return "Wrong elements for 'd' downTo 'a' step 2: $list5" + } + + val list6 = ArrayList() + for (i in 5.5 downTo 3.7 step 0.5) { + list6.add(i) + } + if (list6 != listOf(5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 5.5 downTo 3.7 step 0.5: $list6" + } + + val list7 = ArrayList() + for (i in 5.5.toFloat() downTo 3.7.toFloat() step 0.5.toFloat()) { + list7.add(i) + } + if (list7 != listOf(5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 5.5.toFloat() downTo 3.7.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/inexactSteppedRange.kt b/compiler/testData/codegen/ranges/literal/inexactSteppedRange.kt new file mode 100644 index 00000000000..9965cb48c1d --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/inexactSteppedRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 3..8 step 2) { + list1.add(i) + } + if (list1 != listOf(3, 5, 7)) { + return "Wrong elements for 3..8 step 2: $list1" + } + + val list2 = ArrayList() + for (i in 3.toByte()..8.toByte() step 2) { + list2.add(i) + } + if (list2 != listOf(3, 5, 7)) { + return "Wrong elements for 3.toByte()..8.toByte() step 2: $list2" + } + + val list3 = ArrayList() + for (i in 3.toShort()..8.toShort() step 2) { + list3.add(i) + } + if (list3 != listOf(3, 5, 7)) { + return "Wrong elements for 3.toShort()..8.toShort() step 2: $list3" + } + + val list4 = ArrayList() + for (i in 3.toLong()..8.toLong() step 2.toLong()) { + list4.add(i) + } + if (list4 != listOf(3, 5, 7)) { + return "Wrong elements for 3.toLong()..8.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'a'..'d' step 2) { + list5.add(i) + } + if (list5 != listOf('a', 'c')) { + return "Wrong elements for 'a'..'d' step 2: $list5" + } + + val list6 = ArrayList() + for (i in 4.0..5.8 step 0.5) { + list6.add(i) + } + if (list6 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for 4.0..5.8 step 0.5: $list6" + } + + val list7 = ArrayList() + for (i in 4.0.toFloat()..5.8.toFloat() step 0.5.toFloat()) { + list7.add(i) + } + if (list7 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for 4.0.toFloat()..5.8.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/oneElementDownTo.kt b/compiler/testData/codegen/ranges/literal/oneElementDownTo.kt new file mode 100644 index 00000000000..8c7ff2ab25a --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/oneElementDownTo.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 5 downTo 5) { + list1.add(i) + } + if (list1 != listOf(5)) { + return "Wrong elements for 5 downTo 5: $list1" + } + + val list2 = ArrayList() + for (i in 5.toByte() downTo 5.toByte()) { + list2.add(i) + } + if (list2 != listOf(5.toByte())) { + return "Wrong elements for 5.toByte() downTo 5.toByte(): $list2" + } + + val list3 = ArrayList() + for (i in 5.toShort() downTo 5.toShort()) { + list3.add(i) + } + if (list3 != listOf(5.toShort())) { + return "Wrong elements for 5.toShort() downTo 5.toShort(): $list3" + } + + val list4 = ArrayList() + for (i in 5.toLong() downTo 5.toLong()) { + list4.add(i) + } + if (list4 != listOf(5.toLong())) { + return "Wrong elements for 5.toLong() downTo 5.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'k' downTo 'k') { + list5.add(i) + } + if (list5 != listOf('k')) { + return "Wrong elements for 'k' downTo 'k': $list5" + } + + val list6 = ArrayList() + for (i in 5.0 downTo 5.0) { + list6.add(i) + } + if (list6 != listOf(5.0)) { + return "Wrong elements for 5.0 downTo 5.0: $list6" + } + + val list7 = ArrayList() + for (i in 5.0.toFloat() downTo 5.0.toFloat()) { + list7.add(i) + } + if (list7 != listOf(5.0.toFloat())) { + return "Wrong elements for 5.0.toFloat() downTo 5.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/oneElementRange.kt b/compiler/testData/codegen/ranges/literal/oneElementRange.kt new file mode 100644 index 00000000000..f579719c6cc --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/oneElementRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 5..5) { + list1.add(i) + } + if (list1 != listOf(5)) { + return "Wrong elements for 5..5: $list1" + } + + val list2 = ArrayList() + for (i in 5.toByte()..5.toByte()) { + list2.add(i) + } + if (list2 != listOf(5.toByte())) { + return "Wrong elements for 5.toByte()..5.toByte(): $list2" + } + + val list3 = ArrayList() + for (i in 5.toShort()..5.toShort()) { + list3.add(i) + } + if (list3 != listOf(5.toShort())) { + return "Wrong elements for 5.toShort()..5.toShort(): $list3" + } + + val list4 = ArrayList() + for (i in 5.toLong()..5.toLong()) { + list4.add(i) + } + if (list4 != listOf(5.toLong())) { + return "Wrong elements for 5.toLong()..5.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'k'..'k') { + list5.add(i) + } + if (list5 != listOf('k')) { + return "Wrong elements for 'k'..'k': $list5" + } + + val list6 = ArrayList() + for (i in 5.0..5.0) { + list6.add(i) + } + if (list6 != listOf(5.0)) { + return "Wrong elements for 5.0..5.0: $list6" + } + + val list7 = ArrayList() + for (i in 5.0.toFloat()..5.0.toFloat()) { + list7.add(i) + } + if (list7 != listOf(5.0.toFloat())) { + return "Wrong elements for 5.0.toFloat()..5.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/reversedBackSequence.kt b/compiler/testData/codegen/ranges/literal/reversedBackSequence.kt new file mode 100644 index 00000000000..a6a963a160d --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/reversedBackSequence.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in (5 downTo 3).reversed()) { + list1.add(i) + } + if (list1 != listOf(3, 4, 5)) { + return "Wrong elements for (5 downTo 3).reversed(): $list1" + } + + val list2 = ArrayList() + for (i in (5.toByte() downTo 3.toByte()).reversed()) { + list2.add(i) + } + if (list2 != listOf(3, 4, 5)) { + return "Wrong elements for (5.toByte() downTo 3.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + for (i in (5.toShort() downTo 3.toShort()).reversed()) { + list3.add(i) + } + if (list3 != listOf(3, 4, 5)) { + return "Wrong elements for (5.toShort() downTo 3.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + for (i in (5.toLong() downTo 3.toLong()).reversed()) { + list4.add(i) + } + if (list4 != listOf(3, 4, 5)) { + return "Wrong elements for (5.toLong() downTo 3.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + for (i in ('c' downTo 'a').reversed()) { + list5.add(i) + } + if (list5 != listOf('a', 'b', 'c')) { + return "Wrong elements for ('c' downTo 'a').reversed(): $list5" + } + + val list6 = ArrayList() + for (i in (5.0 downTo 3.0).reversed()) { + list6.add(i) + } + if (list6 != listOf(3.0, 4.0, 5.0)) { + return "Wrong elements for (5.0 downTo 3.0).reversed(): $list6" + } + + val list7 = ArrayList() + for (i in (5.0.toFloat() downTo 3.0.toFloat()).reversed()) { + list7.add(i) + } + if (list7 != listOf(3.0, 4.0, 5.0)) { + return "Wrong elements for (5.0.toFloat() downTo 3.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/reversedEmptyBackSequence.kt b/compiler/testData/codegen/ranges/literal/reversedEmptyBackSequence.kt new file mode 100644 index 00000000000..8f51452ec1a --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/reversedEmptyBackSequence.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in (3 downTo 5).reversed()) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for (3 downTo 5).reversed(): $list1" + } + + val list2 = ArrayList() + for (i in (3.toByte() downTo 5.toByte()).reversed()) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for (3.toByte() downTo 5.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + for (i in (3.toShort() downTo 5.toShort()).reversed()) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for (3.toShort() downTo 5.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + for (i in (3.toLong() downTo 5.toLong()).reversed()) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for (3.toLong() downTo 5.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + for (i in ('a' downTo 'c').reversed()) { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for ('a' downTo 'c').reversed(): $list5" + } + + val list6 = ArrayList() + for (i in (3.0 downTo 5.0).reversed()) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for (3.0 downTo 5.0).reversed(): $list6" + } + + val list7 = ArrayList() + for (i in (3.0.toFloat() downTo 5.0.toFloat()).reversed()) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for (3.0.toFloat() downTo 5.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/reversedEmptyRange.kt b/compiler/testData/codegen/ranges/literal/reversedEmptyRange.kt new file mode 100644 index 00000000000..e7cd674388d --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/reversedEmptyRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in (5..3).reversed()) { + list1.add(i) + } + if (list1 != listOf()) { + return "Wrong elements for (5..3).reversed(): $list1" + } + + val list2 = ArrayList() + for (i in (5.toByte()..3.toByte()).reversed()) { + list2.add(i) + } + if (list2 != listOf()) { + return "Wrong elements for (5.toByte()..3.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + for (i in (5.toShort()..3.toShort()).reversed()) { + list3.add(i) + } + if (list3 != listOf()) { + return "Wrong elements for (5.toShort()..3.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + for (i in (5.toLong()..3.toLong()).reversed()) { + list4.add(i) + } + if (list4 != listOf()) { + return "Wrong elements for (5.toLong()..3.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + for (i in ('c'..'a').reversed()) { + list5.add(i) + } + if (list5 != listOf()) { + return "Wrong elements for ('c'..'a').reversed(): $list5" + } + + val list6 = ArrayList() + for (i in (5.0..3.0).reversed()) { + list6.add(i) + } + if (list6 != listOf()) { + return "Wrong elements for (5.0..3.0).reversed(): $list6" + } + + val list7 = ArrayList() + for (i in (5.0.toFloat()..3.0.toFloat()).reversed()) { + list7.add(i) + } + if (list7 != listOf()) { + return "Wrong elements for (5.0.toFloat()..3.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/reversedInexactSteppedDownTo.kt b/compiler/testData/codegen/ranges/literal/reversedInexactSteppedDownTo.kt new file mode 100644 index 00000000000..1fa566d7a49 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/reversedInexactSteppedDownTo.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in (8 downTo 3 step 2).reversed()) { + list1.add(i) + } + if (list1 != listOf(3, 5, 7)) { + return "Wrong elements for (8 downTo 3 step 2).reversed(): $list1" + } + + val list2 = ArrayList() + for (i in (8.toByte() downTo 3.toByte() step 2).reversed()) { + list2.add(i) + } + if (list2 != listOf(3, 5, 7)) { + return "Wrong elements for (8.toByte() downTo 3.toByte() step 2).reversed(): $list2" + } + + val list3 = ArrayList() + for (i in (8.toShort() downTo 3.toShort() step 2).reversed()) { + list3.add(i) + } + if (list3 != listOf(3, 5, 7)) { + return "Wrong elements for (8.toShort() downTo 3.toShort() step 2).reversed(): $list3" + } + + val list4 = ArrayList() + for (i in (8.toLong() downTo 3.toLong() step 2.toLong()).reversed()) { + list4.add(i) + } + if (list4 != listOf(3, 5, 7)) { + return "Wrong elements for (8.toLong() downTo 3.toLong() step 2.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + for (i in ('d' downTo 'a' step 2).reversed()) { + list5.add(i) + } + if (list5 != listOf('a', 'c')) { + return "Wrong elements for ('d' downTo 'a' step 2).reversed(): $list5" + } + + val list6 = ArrayList() + for (i in (5.8 downTo 4.0 step 0.5).reversed()) { + list6.add(i) + } + if (list6 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for (5.8 downTo 4.0 step 0.5).reversed(): $list6" + } + + val list7 = ArrayList() + for (i in (5.8.toFloat() downTo 4.0.toFloat() step 0.5).reversed()) { + list7.add(i) + } + if (list7 != listOf(4.0, 4.5, 5.0, 5.5)) { + return "Wrong elements for (5.8.toFloat() downTo 4.0.toFloat() step 0.5).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/reversedRange.kt b/compiler/testData/codegen/ranges/literal/reversedRange.kt new file mode 100644 index 00000000000..069c0501368 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/reversedRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in (3..5).reversed()) { + list1.add(i) + } + if (list1 != listOf(5, 4, 3)) { + return "Wrong elements for (3..5).reversed(): $list1" + } + + val list2 = ArrayList() + for (i in (3.toByte()..5.toByte()).reversed()) { + list2.add(i) + } + if (list2 != listOf(5, 4, 3)) { + return "Wrong elements for (3.toByte()..5.toByte()).reversed(): $list2" + } + + val list3 = ArrayList() + for (i in (3.toShort()..5.toShort()).reversed()) { + list3.add(i) + } + if (list3 != listOf(5, 4, 3)) { + return "Wrong elements for (3.toShort()..5.toShort()).reversed(): $list3" + } + + val list4 = ArrayList() + for (i in (3.toLong()..5.toLong()).reversed()) { + list4.add(i) + } + if (list4 != listOf(5, 4, 3)) { + return "Wrong elements for (3.toLong()..5.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + for (i in ('a'..'c').reversed()) { + list5.add(i) + } + if (list5 != listOf('c', 'b', 'a')) { + return "Wrong elements for ('a'..'c').reversed(): $list5" + } + + val list6 = ArrayList() + for (i in (3.0..5.0).reversed()) { + list6.add(i) + } + if (list6 != listOf(5.0, 4.0, 3.0)) { + return "Wrong elements for (3.0..5.0).reversed(): $list6" + } + + val list7 = ArrayList() + for (i in (3.0.toFloat()..5.0.toFloat()).reversed()) { + list7.add(i) + } + if (list7 != listOf(5.0, 4.0, 3.0)) { + return "Wrong elements for (3.0.toFloat()..5.0.toFloat()).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/reversedSimpleSteppedRange.kt b/compiler/testData/codegen/ranges/literal/reversedSimpleSteppedRange.kt new file mode 100644 index 00000000000..ad0dd99aab6 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/reversedSimpleSteppedRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in (3..9 step 2).reversed()) { + list1.add(i) + } + if (list1 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3..9 step 2).reversed(): $list1" + } + + val list2 = ArrayList() + for (i in (3.toByte()..9.toByte() step 2).reversed()) { + list2.add(i) + } + if (list2 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3.toByte()..9.toByte() step 2).reversed(): $list2" + } + + val list3 = ArrayList() + for (i in (3.toShort()..9.toShort() step 2).reversed()) { + list3.add(i) + } + if (list3 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3.toShort()..9.toShort() step 2).reversed(): $list3" + } + + val list4 = ArrayList() + for (i in (3.toLong()..9.toLong() step 2.toLong()).reversed()) { + list4.add(i) + } + if (list4 != listOf(9, 7, 5, 3)) { + return "Wrong elements for (3.toLong()..9.toLong() step 2.toLong()).reversed(): $list4" + } + + val list5 = ArrayList() + for (i in ('c'..'g' step 2).reversed()) { + list5.add(i) + } + if (list5 != listOf('g', 'e', 'c')) { + return "Wrong elements for ('c'..'g' step 2).reversed(): $list5" + } + + val list6 = ArrayList() + for (i in (4.0..6.0 step 0.5).reversed()) { + list6.add(i) + } + if (list6 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for (4.0..6.0 step 0.5).reversed(): $list6" + } + + val list7 = ArrayList() + for (i in (4.0.toFloat()..6.0.toFloat() step 0.5).reversed()) { + list7.add(i) + } + if (list7 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for (4.0.toFloat()..6.0.toFloat() step 0.5).reversed(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/simpleDownTo.kt b/compiler/testData/codegen/ranges/literal/simpleDownTo.kt new file mode 100644 index 00000000000..728f8409b1b --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/simpleDownTo.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 9 downTo 3) { + list1.add(i) + } + if (list1 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9 downTo 3: $list1" + } + + val list2 = ArrayList() + for (i in 9.toByte() downTo 3.toByte()) { + list2.add(i) + } + if (list2 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9.toByte() downTo 3.toByte(): $list2" + } + + val list3 = ArrayList() + for (i in 9.toShort() downTo 3.toShort()) { + list3.add(i) + } + if (list3 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9.toShort() downTo 3.toShort(): $list3" + } + + val list4 = ArrayList() + for (i in 9.toLong() downTo 3.toLong()) { + list4.add(i) + } + if (list4 != listOf(9, 8, 7, 6, 5, 4, 3)) { + return "Wrong elements for 9.toLong() downTo 3.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'g' downTo 'c') { + list5.add(i) + } + if (list5 != listOf('g', 'f', 'e', 'd', 'c')) { + return "Wrong elements for 'g' downTo 'c': $list5" + } + + val list6 = ArrayList() + for (i in 9.0 downTo 3.0) { + list6.add(i) + } + if (list6 != listOf(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0)) { + return "Wrong elements for 9.0 downTo 3.0: $list6" + } + + val list7 = ArrayList() + for (i in 9.0.toFloat() downTo 3.0.toFloat()) { + list7.add(i) + } + if (list7 != listOf(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0)) { + return "Wrong elements for 9.0.toFloat() downTo 3.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/simpleRange.kt b/compiler/testData/codegen/ranges/literal/simpleRange.kt new file mode 100644 index 00000000000..955a0bfe467 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/simpleRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 3..9) { + list1.add(i) + } + if (list1 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3..9: $list1" + } + + val list2 = ArrayList() + for (i in 3.toByte()..9.toByte()) { + list2.add(i) + } + if (list2 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3.toByte()..9.toByte(): $list2" + } + + val list3 = ArrayList() + for (i in 3.toShort()..9.toShort()) { + list3.add(i) + } + if (list3 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3.toShort()..9.toShort(): $list3" + } + + val list4 = ArrayList() + for (i in 3.toLong()..9.toLong()) { + list4.add(i) + } + if (list4 != listOf(3, 4, 5, 6, 7, 8, 9)) { + return "Wrong elements for 3.toLong()..9.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'c'..'g') { + list5.add(i) + } + if (list5 != listOf('c', 'd', 'e', 'f', 'g')) { + return "Wrong elements for 'c'..'g': $list5" + } + + val list6 = ArrayList() + for (i in 3.0..9.0) { + list6.add(i) + } + if (list6 != listOf(3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)) { + return "Wrong elements for 3.0..9.0: $list6" + } + + val list7 = ArrayList() + for (i in 3.0.toFloat()..9.0.toFloat()) { + list7.add(i) + } + if (list7 != listOf(3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0)) { + return "Wrong elements for 3.0.toFloat()..9.0.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/simpleSteppedDownTo.kt b/compiler/testData/codegen/ranges/literal/simpleSteppedDownTo.kt new file mode 100644 index 00000000000..1773eae1b07 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/simpleSteppedDownTo.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 9 downTo 3 step 2) { + list1.add(i) + } + if (list1 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9 downTo 3 step 2: $list1" + } + + val list2 = ArrayList() + for (i in 9.toByte() downTo 3.toByte() step 2) { + list2.add(i) + } + if (list2 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9.toByte() downTo 3.toByte() step 2: $list2" + } + + val list3 = ArrayList() + for (i in 9.toShort() downTo 3.toShort() step 2) { + list3.add(i) + } + if (list3 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9.toShort() downTo 3.toShort() step 2: $list3" + } + + val list4 = ArrayList() + for (i in 9.toLong() downTo 3.toLong() step 2.toLong()) { + list4.add(i) + } + if (list4 != listOf(9, 7, 5, 3)) { + return "Wrong elements for 9.toLong() downTo 3.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'g' downTo 'c' step 2) { + list5.add(i) + } + if (list5 != listOf('g', 'e', 'c')) { + return "Wrong elements for 'g' downTo 'c' step 2: $list5" + } + + val list6 = ArrayList() + for (i in 6.0 downTo 4.0 step 0.5) { + list6.add(i) + } + if (list6 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 6.0 downTo 4.0 step 0.5: $list6" + } + + val list7 = ArrayList() + for (i in 6.0.toFloat() downTo 4.0.toFloat() step 0.5.toFloat()) { + list7.add(i) + } + if (list7 != listOf(6.0, 5.5, 5.0, 4.5, 4.0)) { + return "Wrong elements for 6.0.toFloat() downTo 4.0.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/testData/codegen/ranges/literal/simpleSteppedRange.kt b/compiler/testData/codegen/ranges/literal/simpleSteppedRange.kt new file mode 100644 index 00000000000..3e60355e5e4 --- /dev/null +++ b/compiler/testData/codegen/ranges/literal/simpleSteppedRange.kt @@ -0,0 +1,62 @@ +// Auto-generated by org.jetbrains.jet.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! +import java.util.ArrayList + +fun box(): String { + val list1 = ArrayList() + for (i in 3..9 step 2) { + list1.add(i) + } + if (list1 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3..9 step 2: $list1" + } + + val list2 = ArrayList() + for (i in 3.toByte()..9.toByte() step 2) { + list2.add(i) + } + if (list2 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3.toByte()..9.toByte() step 2: $list2" + } + + val list3 = ArrayList() + for (i in 3.toShort()..9.toShort() step 2) { + list3.add(i) + } + if (list3 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3.toShort()..9.toShort() step 2: $list3" + } + + val list4 = ArrayList() + for (i in 3.toLong()..9.toLong() step 2.toLong()) { + list4.add(i) + } + if (list4 != listOf(3, 5, 7, 9)) { + return "Wrong elements for 3.toLong()..9.toLong() step 2.toLong(): $list4" + } + + val list5 = ArrayList() + for (i in 'c'..'g' step 2) { + list5.add(i) + } + if (list5 != listOf('c', 'e', 'g')) { + return "Wrong elements for 'c'..'g' step 2: $list5" + } + + val list6 = ArrayList() + for (i in 4.0..6.0 step 0.5) { + list6.add(i) + } + if (list6 != listOf(4.0, 4.5, 5.0, 5.5, 6.0)) { + return "Wrong elements for 4.0..6.0 step 0.5: $list6" + } + + val list7 = ArrayList() + for (i in 4.0.toFloat()..6.0.toFloat() step 0.5.toFloat()) { + list7.add(i) + } + if (list7 != listOf(4.0, 4.5, 5.0, 5.5, 6.0)) { + return "Wrong elements for 4.0.toFloat()..6.0.toFloat() step 0.5.toFloat(): $list7" + } + + return "OK" +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractRangesCodegenTest.java b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractRangesCodegenTest.java new file mode 100644 index 00000000000..66a83f5c027 --- /dev/null +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/AbstractRangesCodegenTest.java @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.codegen.generated; + +import org.jetbrains.jet.ConfigurationKind; +import org.jetbrains.jet.codegen.CodegenTestCase; + +public abstract class AbstractRangesCodegenTest extends CodegenTestCase { + @Override + public void setUp() throws Exception { + super.setUp(); + createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.ALL); + } +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/RangesCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/RangesCodegenTestGenerated.java new file mode 100644 index 00000000000..d2f13d48ebc --- /dev/null +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/RangesCodegenTestGenerated.java @@ -0,0 +1,221 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.jet.codegen.generated; + +import junit.framework.Assert; +import junit.framework.Test; +import junit.framework.TestSuite; + +import java.io.File; +import org.jetbrains.jet.JetTestUtils; +import org.jetbrains.jet.test.InnerTestClasses; +import org.jetbrains.jet.test.TestMetadata; + +import org.jetbrains.jet.codegen.generated.AbstractRangesCodegenTest; + +/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/codegen/ranges") +@InnerTestClasses({RangesCodegenTestGenerated.Expression.class, RangesCodegenTestGenerated.Literal.class}) +public class RangesCodegenTestGenerated extends AbstractRangesCodegenTest { + public void testAllFilesPresentInRanges() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/ranges"), "kt", true); + } + + @TestMetadata("compiler/testData/codegen/ranges/expression") + public static class Expression extends AbstractRangesCodegenTest { + public void testAllFilesPresentInExpression() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/ranges/expression"), "kt", true); + } + + @TestMetadata("emptyDownto.kt") + public void testEmptyDownto() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/emptyDownto.kt"); + } + + @TestMetadata("emptyRange.kt") + public void testEmptyRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/emptyRange.kt"); + } + + @TestMetadata("inexactSteppedDownTo.kt") + public void testInexactSteppedDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/inexactSteppedDownTo.kt"); + } + + @TestMetadata("inexactSteppedRange.kt") + public void testInexactSteppedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/inexactSteppedRange.kt"); + } + + @TestMetadata("oneElementDownTo.kt") + public void testOneElementDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/oneElementDownTo.kt"); + } + + @TestMetadata("oneElementRange.kt") + public void testOneElementRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/oneElementRange.kt"); + } + + @TestMetadata("reversedBackSequence.kt") + public void testReversedBackSequence() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/reversedBackSequence.kt"); + } + + @TestMetadata("reversedEmptyBackSequence.kt") + public void testReversedEmptyBackSequence() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/reversedEmptyBackSequence.kt"); + } + + @TestMetadata("reversedEmptyRange.kt") + public void testReversedEmptyRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/reversedEmptyRange.kt"); + } + + @TestMetadata("reversedInexactSteppedDownTo.kt") + public void testReversedInexactSteppedDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/reversedInexactSteppedDownTo.kt"); + } + + @TestMetadata("reversedRange.kt") + public void testReversedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/reversedRange.kt"); + } + + @TestMetadata("reversedSimpleSteppedRange.kt") + public void testReversedSimpleSteppedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/reversedSimpleSteppedRange.kt"); + } + + @TestMetadata("simpleDownTo.kt") + public void testSimpleDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/simpleDownTo.kt"); + } + + @TestMetadata("simpleRange.kt") + public void testSimpleRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/simpleRange.kt"); + } + + @TestMetadata("simpleSteppedDownTo.kt") + public void testSimpleSteppedDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/simpleSteppedDownTo.kt"); + } + + @TestMetadata("simpleSteppedRange.kt") + public void testSimpleSteppedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/expression/simpleSteppedRange.kt"); + } + + } + + @TestMetadata("compiler/testData/codegen/ranges/literal") + public static class Literal extends AbstractRangesCodegenTest { + public void testAllFilesPresentInLiteral() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/ranges/literal"), "kt", true); + } + + @TestMetadata("emptyDownto.kt") + public void testEmptyDownto() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/emptyDownto.kt"); + } + + @TestMetadata("emptyRange.kt") + public void testEmptyRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/emptyRange.kt"); + } + + @TestMetadata("inexactSteppedDownTo.kt") + public void testInexactSteppedDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/inexactSteppedDownTo.kt"); + } + + @TestMetadata("inexactSteppedRange.kt") + public void testInexactSteppedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/inexactSteppedRange.kt"); + } + + @TestMetadata("oneElementDownTo.kt") + public void testOneElementDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/oneElementDownTo.kt"); + } + + @TestMetadata("oneElementRange.kt") + public void testOneElementRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/oneElementRange.kt"); + } + + @TestMetadata("reversedBackSequence.kt") + public void testReversedBackSequence() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/reversedBackSequence.kt"); + } + + @TestMetadata("reversedEmptyBackSequence.kt") + public void testReversedEmptyBackSequence() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/reversedEmptyBackSequence.kt"); + } + + @TestMetadata("reversedEmptyRange.kt") + public void testReversedEmptyRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/reversedEmptyRange.kt"); + } + + @TestMetadata("reversedInexactSteppedDownTo.kt") + public void testReversedInexactSteppedDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/reversedInexactSteppedDownTo.kt"); + } + + @TestMetadata("reversedRange.kt") + public void testReversedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/reversedRange.kt"); + } + + @TestMetadata("reversedSimpleSteppedRange.kt") + public void testReversedSimpleSteppedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/reversedSimpleSteppedRange.kt"); + } + + @TestMetadata("simpleDownTo.kt") + public void testSimpleDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/simpleDownTo.kt"); + } + + @TestMetadata("simpleRange.kt") + public void testSimpleRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/simpleRange.kt"); + } + + @TestMetadata("simpleSteppedDownTo.kt") + public void testSimpleSteppedDownTo() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/simpleSteppedDownTo.kt"); + } + + @TestMetadata("simpleSteppedRange.kt") + public void testSimpleSteppedRange() throws Exception { + blackBoxFileByFullPath("compiler/testData/codegen/ranges/literal/simpleSteppedRange.kt"); + } + + } + + public static Test suite() { + TestSuite suite = new TestSuite("RangesCodegenTestGenerated"); + suite.addTestSuite(RangesCodegenTestGenerated.class); + suite.addTestSuite(Expression.class); + suite.addTestSuite(Literal.class); + return suite; + } +} diff --git a/generators/org/jetbrains/jet/generators/tests/GenerateRangesCodegenTestData.java b/generators/org/jetbrains/jet/generators/tests/GenerateRangesCodegenTestData.java new file mode 100644 index 00000000000..9c85dddd6b3 --- /dev/null +++ b/generators/org/jetbrains/jet/generators/tests/GenerateRangesCodegenTestData.java @@ -0,0 +1,148 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.generators.tests; + +import com.intellij.openapi.util.io.FileUtil; +import com.intellij.util.LineSeparator; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class GenerateRangesCodegenTestData { + private static final File TEST_DATA_DIR = new File("compiler/testData/codegen/ranges"); + private static final File AS_LITERAL_DIR = new File(TEST_DATA_DIR, "literal"); + private static final File AS_EXPRESSION_DIR = new File(TEST_DATA_DIR, "expression"); + private static final File SOURCE_TEST_FILE = new File("libraries/stdlib/test/language/RangeIterationTest.kt"); + + private static final Pattern TEST_FUN_PATTERN = Pattern.compile("test fun (\\w+)\\(\\) \\{.+?}", Pattern.DOTALL); + private static final Pattern SUBTEST_INVOCATION_PATTERN = Pattern.compile("doTest\\(([^,]+), [^,]+, [^,]+, [^,]+,\\s+listOf[\\w<>]*\\(([^\\n]*)\\)\\)", Pattern.DOTALL); + + public static final String LITERAL_TEMPLATE = " val $LIST = ArrayList<$TYPE>()\n" + + " for (i in $RANGE_EXPR) {\n" + + " $LIST.add(i)\n" + + " }\n" + + " if ($LIST != listOf<$TYPE>($LIST_ELEMENTS)) {\n" + + " return \"Wrong elements for $RANGE_EXPR: $$LIST\"\n" + + " }\n" + + "\n"; + + public static final String EXPRESSION_TEMPLATE = " val $LIST = ArrayList<$TYPE>()\n" + + " val $RANGE = $RANGE_EXPR\n" + + " for (i in $RANGE) {\n" + + " $LIST.add(i)\n" + + " }\n" + + " if ($LIST != listOf<$TYPE>($LIST_ELEMENTS)) {\n" + + " return \"Wrong elements for $RANGE_EXPR: $$LIST\"\n" + + " }\n" + + "\n"; + + private static String detectElementType(String rangeExpression) { + Matcher matcher = Pattern.compile("\\.to(\\w+)").matcher(rangeExpression); + if (matcher.find()) { + return matcher.group(1); + } + if (rangeExpression.contains("'")) { + return "Char"; + } + if (Pattern.compile("\\d\\.\\d").matcher(rangeExpression).find()) { + return "Double"; + } + return "Int"; + } + + private static String renderTemplate(String template, int number, String elementType, String rangeExpression, String expectedListElements) { + return template + .replace("$RANGE_EXPR", rangeExpression) + .replace("$LIST_ELEMENTS", expectedListElements) + .replace("$LIST", "list" + number) + .replace("$RANGE", "range" + number) + .replace("$TYPE", elementType) + .replace("\n", LineSeparator.getSystemLineSeparator().getSeparatorString()); + } + + private static void writeToFile(File file, CharSequence generatedBody) { + PrintWriter out; + try { + //noinspection IOResourceOpenedButNotSafelyClosed + out = new PrintWriter(file); + } + catch (FileNotFoundException e) { + throw new AssertionError(e); + } + + out.println("// Auto-generated by " + GenerateRangesCodegenTestData.class.getName() + ". DO NOT EDIT!"); + out.println("import java.util.ArrayList"); + out.println(); + out.println("fun box(): String {"); + out.print(generatedBody); + out.println(" return \"OK\""); + out.println("}"); + out.close(); + + System.out.println("Written to " + file); + } + + public static void main(String[] args) { + try { + FileUtil.delete(TEST_DATA_DIR); + //noinspection ResultOfMethodCallIgnored + AS_LITERAL_DIR.mkdirs(); + //noinspection ResultOfMethodCallIgnored + AS_EXPRESSION_DIR.mkdirs(); + + String sourceContent = FileUtil.loadFile(SOURCE_TEST_FILE); + Matcher testFunMatcher = TEST_FUN_PATTERN.matcher(sourceContent); + while (testFunMatcher.find()) { + String testFunName = testFunMatcher.group(1); + if (testFunName.equals("emptyConstant")) { + continue; + } + + String testFunText = testFunMatcher.group(); + + StringBuilder asLiteralBody = new StringBuilder(); + StringBuilder asExpressionBody = new StringBuilder(); + int index = 0; + + Matcher matcher = SUBTEST_INVOCATION_PATTERN.matcher(testFunText); + while (matcher.find()) { + index++; + String rangeExpression = matcher.group(1); + String expectedListElements = matcher.group(2); + String elementType = detectElementType(rangeExpression); + asLiteralBody.append(renderTemplate(LITERAL_TEMPLATE, index, elementType, rangeExpression, expectedListElements)); + asExpressionBody.append(renderTemplate(EXPRESSION_TEMPLATE, index, elementType, rangeExpression, expectedListElements)); + } + + String fileName = testFunName + ".kt"; + writeToFile(new File(AS_LITERAL_DIR, fileName), asLiteralBody); + writeToFile(new File(AS_EXPRESSION_DIR, fileName), asExpressionBody); + } + + } + catch (IOException e) { + throw new RuntimeException(e); + } + } + + private GenerateRangesCodegenTestData() { + } +} diff --git a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java index ae96de09536..06531d5bbca 100644 --- a/generators/org/jetbrains/jet/generators/tests/GenerateTests.java +++ b/generators/org/jetbrains/jet/generators/tests/GenerateTests.java @@ -25,6 +25,7 @@ import org.jetbrains.jet.codegen.AbstractDataClassCodegenTest; import org.jetbrains.jet.codegen.defaultConstructor.AbstractDefaultConstructorCodegenTest; import org.jetbrains.jet.codegen.flags.AbstractWriteFlagsTest; import org.jetbrains.jet.codegen.generated.AbstractBlackBoxCodegenTest; +import org.jetbrains.jet.codegen.generated.AbstractRangesCodegenTest; import org.jetbrains.jet.jvm.compiler.*; import org.jetbrains.jet.lang.resolve.lazy.AbstractLazyResolveDescriptorRendererTest; import org.jetbrains.jet.lang.resolve.lazy.AbstractLazyResolveNamespaceComparingTest; @@ -70,6 +71,15 @@ public class GenerateTests { testModel("compiler/testData/codegen/box", "blackBoxFileByFullPath") ); + GenerateRangesCodegenTestData.main(args); + + generateTest( + "compiler/tests/", + "RangesCodegenTestGenerated", + AbstractRangesCodegenTest.class, + testModel("compiler/testData/codegen/ranges", "blackBoxFileByFullPath") + ); + generateTest( "compiler/tests/", "BlackBoxWithJavaCodegenTestGenerated", diff --git a/libraries/stdlib/test/language/RangeIterationTest.kt b/libraries/stdlib/test/language/RangeIterationTest.kt index 697c04cbd02..59b2c6574d1 100644 --- a/libraries/stdlib/test/language/RangeIterationTest.kt +++ b/libraries/stdlib/test/language/RangeIterationTest.kt @@ -3,6 +3,7 @@ package language import kotlin.test.assertEquals import org.junit.Test as test +// Test data for codegen is generated from this class. If you change it, rerun GenerateTests public class RangeIterationTest { private fun doTest( sequence: Progression,