diff --git a/compiler/frontend/src/jet/Ranges.jet b/compiler/frontend/src/jet/Ranges.jet index d8cc3edb9d6..0838f01df81 100644 --- a/compiler/frontend/src/jet/Ranges.jet +++ b/compiler/frontend/src/jet/Ranges.jet @@ -6,71 +6,85 @@ public trait Range> { public fun contains(item : T) : Boolean } -public class IntRange(public override val start : Int, public override val end : Int) : Range, IntIterable { +public class IntRange(public override val start : Int, public override val end : Int) : Range, NumberSequence, IntIterable { public override fun iterator () : IntIterator public override fun contains (elem: Int) : Boolean + public override val increment: Int + public class object { public val EMPTY: IntRange } } -public class LongRange(public override val start : Long, public override val end : Long) : Range, LongIterable { +public class LongRange(public override val start : Long, public override val end : Long) : Range, NumberSequence, LongIterable { public override fun iterator () : LongIterator public override fun contains (elem: Long) : Boolean + public override val increment: Long + public class object { public val EMPTY: LongRange } } -public class ByteRange(public override val start : Byte, public override val end : Byte) : Range, ByteIterable { +public class ByteRange(public override val start : Byte, public override val end : Byte) : Range, NumberSequence, ByteIterable { public override fun iterator () : ByteIterator public override fun contains (elem: Byte) : Boolean + public override val increment: Int + public class object { public val EMPTY: ByteRange } } -public class ShortRange(public override val start : Short, public override val end : Short) : Range, ShortIterable { +public class ShortRange(public override val start : Short, public override val end : Short) : Range, NumberSequence, ShortIterable { public override fun iterator () : ShortIterator public override fun contains (elem: Short) : Boolean + public override val increment: Int + public class object { public val EMPTY: ShortRange } } -public class CharRange(public override val start : Char, public override val end : Char) : Range, CharIterable { +public class CharRange(public override val start : Char, public override val end : Char) : Range, NumberSequence, CharIterable { public override fun iterator () : CharIterator public override fun contains (elem: Char) : Boolean + public override val increment: Int + public class object { public val EMPTY: CharRange } } -public class FloatRange(public override val start : Float, public override val end : Float) : Range, FloatIterable { +public class FloatRange(public override val start : Float, public override val end : Float) : Range, NumberSequence, FloatIterable { public override fun iterator () : FloatIterator public override fun contains (elem: Float) : Boolean + public override val increment: Float + public class object { public val EMPTY: FloatRange } } -public class DoubleRange(public override val start : Double, public override val end : Double) : Range, DoubleIterable { +public class DoubleRange(public override val start : Double, public override val end : Double) : Range, NumberSequence, DoubleIterable { public override fun iterator () : DoubleIterator public override fun contains (elem: Double) : Boolean + public override val increment: Double + public class object { public val EMPTY: DoubleRange } diff --git a/runtime/src/jet/ByteRange.java b/runtime/src/jet/ByteRange.java index 6b75f0fb143..95307785dbb 100644 --- a/runtime/src/jet/ByteRange.java +++ b/runtime/src/jet/ByteRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class ByteRange implements Range, ByteIterable { +public final class ByteRange implements Range, NumberSequence, ByteIterable { private final byte start; private final byte end; @@ -74,6 +74,11 @@ public final class ByteRange implements Range, ByteIterable { return end; } + @Override + public Integer getIncrement() { + return 1; + } + @Override public ByteIterator iterator() { return new ByteSequenceIterator(getStart(), getEnd(), 1); diff --git a/runtime/src/jet/CharRange.java b/runtime/src/jet/CharRange.java index e92f1f760df..d288b29ef39 100644 --- a/runtime/src/jet/CharRange.java +++ b/runtime/src/jet/CharRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class CharRange implements Range, CharIterable { +public final class CharRange implements Range, NumberSequence, CharIterable { private final char start; private final char end; @@ -74,6 +74,11 @@ public final class CharRange implements Range, CharIterable { return end; } + @Override + public Integer getIncrement() { + return 1; + } + @Override public CharIterator iterator() { return new CharacterSequenceIterator(getStart(), getEnd(), 1); diff --git a/runtime/src/jet/DoubleRange.java b/runtime/src/jet/DoubleRange.java index 9dcbe36a843..98c53c889ae 100644 --- a/runtime/src/jet/DoubleRange.java +++ b/runtime/src/jet/DoubleRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class DoubleRange implements Range, DoubleIterable { +public final class DoubleRange implements Range, NumberSequence, DoubleIterable { private final double start; private final double end; @@ -75,6 +75,11 @@ public final class DoubleRange implements Range, DoubleIterable { return end; } + @Override + public Double getIncrement() { + return 1.0; + } + @Override public DoubleIterator iterator() { return new DoubleSequenceIterator(getStart(), getEnd(), 1); diff --git a/runtime/src/jet/FloatRange.java b/runtime/src/jet/FloatRange.java index 418bfe256a1..08decd965fd 100644 --- a/runtime/src/jet/FloatRange.java +++ b/runtime/src/jet/FloatRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class FloatRange implements Range, FloatIterable { +public final class FloatRange implements Range, NumberSequence, FloatIterable { private final float start; private final float end; @@ -71,6 +71,11 @@ public final class FloatRange implements Range, FloatIterable { return end; } + @Override + public Float getIncrement() { + return 1.0f; + } + @Override public FloatIterator iterator() { return new FloatSequenceIterator(getStart(), getEnd(), 1); diff --git a/runtime/src/jet/IntRange.java b/runtime/src/jet/IntRange.java index dd4c9470e67..2d26265ebaa 100644 --- a/runtime/src/jet/IntRange.java +++ b/runtime/src/jet/IntRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class IntRange implements Range, IntIterable { +public final class IntRange implements Range, NumberSequence, IntIterable { private final int start; private final int end; @@ -74,6 +74,11 @@ public final class IntRange implements Range, IntIterable { return end; } + @Override + public Integer getIncrement() { + return 1; + } + @Override public IntIterator iterator() { return new IntSequenceIterator(getStart(), getEnd(), 1); diff --git a/runtime/src/jet/LongRange.java b/runtime/src/jet/LongRange.java index d52e048c513..4cc57c2679f 100644 --- a/runtime/src/jet/LongRange.java +++ b/runtime/src/jet/LongRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class LongRange implements Range, LongIterable { +public final class LongRange implements Range, NumberSequence, LongIterable { private final long start; private final long end; @@ -74,6 +74,11 @@ public final class LongRange implements Range, LongIterable { return end; } + @Override + public Long getIncrement() { + return 1L; + } + @Override public LongIterator iterator() { return new LongSequenceIterator(getStart(), getEnd(), 1); diff --git a/runtime/src/jet/ShortRange.java b/runtime/src/jet/ShortRange.java index e634f70665a..f6370865dcf 100644 --- a/runtime/src/jet/ShortRange.java +++ b/runtime/src/jet/ShortRange.java @@ -19,7 +19,7 @@ package jet; import org.jetbrains.jet.rt.annotation.AssertInvisibleInResolver; @AssertInvisibleInResolver -public final class ShortRange implements Range, ShortIterable { +public final class ShortRange implements Range, NumberSequence, ShortIterable { private final short start; private final short end; @@ -74,6 +74,11 @@ public final class ShortRange implements Range, ShortIterable { return end; } + @Override + public Integer getIncrement() { + return 1; + } + @Override public ShortIterator iterator() { return new ShortSequenceIterator(getStart(), getEnd(), 1);