KT-944 iterations over empty ranges

This commit is contained in:
Alex Tkachman
2012-01-10 09:33:54 +02:00
parent ed58ca219b
commit a0134fb0f2
9 changed files with 43 additions and 1 deletions
@@ -536,7 +536,7 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> {
gen(expression.getLoopRange(), loopRangeType);
v.dup();
v.invokevirtual("jet/IntRange", "getStart", "()I");
v.invokevirtual("jet/IntRange", "getIteratorStart", "()I");
v.store(lookupLocal(parameterDescriptor), Type.INT_TYPE);
v.invokevirtual("jet/IntRange", "getEnd", "()I");
v.store(myEndVar, Type.INT_TYPE);
+10
View File
@@ -11,6 +11,8 @@ class IntRange(val start : Int, val size : Int) : Range<Int>, IntIterable {
val end : Int
val iteratorStart : Int
fun minus() : IntRange
fun step(step: Int) : IntIterator
@@ -23,6 +25,8 @@ class LongRange(val start : Long, val size : Long) : Range<Long>, LongIterable {
fun contains (elem: Long) : Boolean
val iteratorStart : Long
val end : Long
fun minus() : LongRange
@@ -39,6 +43,8 @@ class ByteRange(val start : Byte, val size : Int) : Range<Byte>, ByteIterable {
val end : Byte
val iteratorStart : Byte
fun minus() : ByteRange
fun step(step: Int) : ByteIterator
@@ -51,6 +57,8 @@ class ShortRange(val start : Short, val size : Int) : Range<Short>, ShortIterabl
fun contains (elem: Byte) : Boolean
val iteratorStart : Short
val end : Short
fun minus() : ShortRange
@@ -65,6 +73,8 @@ class CharRange(val start : Char, val size : Int) : Range<Char>, CharIterable {
fun contains (elem: Char) : Boolean
val iteratorStart : Char
val end : Char
fun minus() : CharRange
@@ -0,0 +1,8 @@
fun box() : String {
for (i in "".indices) {
""[i]
}
return "OK"
}
val String?.indices : IntRange get() = IntRange(0, this.sure().length)
@@ -379,4 +379,8 @@ public class PrimitiveTypesTest extends CodegenTestCase {
public void testKt930 () {
blackBoxFile("regressions/kt930.kt");
}
public void testKt944 () {
blackBoxFile("regressions/kt944.kt");
}
}