diff --git a/compiler/frontend/src/jet/Library.jet b/compiler/frontend/src/jet/Library.jet index 580d1dd1a2b..6feeeb7d334 100644 --- a/compiler/frontend/src/jet/Library.jet +++ b/compiler/frontend/src/jet/Library.jet @@ -103,6 +103,38 @@ trait Iterable { fun iterator() : Iterator } +trait ByteIterable : Iterable { + override fun iterator() : ByteIterator +} + +trait ShortIterable : Iterable { + override fun iterator() : ShortIterator +} + +trait IntIterable : Iterable { + override fun iterator() : IntIterator +} + +trait LongIterable : Iterable { + override fun iterator() : LongIterator +} + +trait FloatIterable : Iterable { + override fun iterator() : FloatIterator +} + +trait DoubleIterable : Iterable { + override fun iterator() : DoubleIterator +} + +trait BooleanIterable : Iterable { + override fun iterator() : BooleanIterator +} + +trait CharIterable : Iterable { + override fun iterator() : CharIterator +} + fun Array(val size : Int) : Array class Array(val size : Int, init : fun(Int) : T) { @@ -230,7 +262,7 @@ trait Range> { fun contains(item : T) : Boolean } -class IntRange(val start : Int, size : Int, reversed : Boolean = false) : Range, Iterable { +class IntRange(val start : Int, size : Int, reversed : Boolean = false) : Range, IntIterable { fun iterator () : Iterator fun contains (elem: Int) : Boolean diff --git a/stdlib/src/jet/BooleanIterable.java b/stdlib/src/jet/BooleanIterable.java new file mode 100644 index 00000000000..76d59748d65 --- /dev/null +++ b/stdlib/src/jet/BooleanIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface BooleanIterable extends Iterable { + @Override + BooleanIterator iterator(); +} diff --git a/stdlib/src/jet/ByteIterable.java b/stdlib/src/jet/ByteIterable.java new file mode 100644 index 00000000000..36e773da574 --- /dev/null +++ b/stdlib/src/jet/ByteIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface ByteIterable extends Iterable { + @Override + ByteIterator iterator(); +} diff --git a/stdlib/src/jet/CharIterable.java b/stdlib/src/jet/CharIterable.java new file mode 100644 index 00000000000..d8646e449f3 --- /dev/null +++ b/stdlib/src/jet/CharIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface CharIterable extends Iterable { + @Override + CharIterator iterator(); +} diff --git a/stdlib/src/jet/DoubleIterable.java b/stdlib/src/jet/DoubleIterable.java new file mode 100644 index 00000000000..ac6336039a2 --- /dev/null +++ b/stdlib/src/jet/DoubleIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface DoubleIterable extends Iterable { + @Override + DoubleIterator iterator(); +} diff --git a/stdlib/src/jet/FloatIterable.java b/stdlib/src/jet/FloatIterable.java new file mode 100644 index 00000000000..5bbd25f3dd9 --- /dev/null +++ b/stdlib/src/jet/FloatIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface FloatIterable extends Iterable { + @Override + FloatIterator iterator(); +} diff --git a/stdlib/src/jet/IntIterable.java b/stdlib/src/jet/IntIterable.java new file mode 100644 index 00000000000..0963ba1f099 --- /dev/null +++ b/stdlib/src/jet/IntIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface IntIterable extends Iterable { + @Override + IntIterator iterator(); +} diff --git a/stdlib/src/jet/IntRange.java b/stdlib/src/jet/IntRange.java index 13811dbba40..7866919f9fe 100644 --- a/stdlib/src/jet/IntRange.java +++ b/stdlib/src/jet/IntRange.java @@ -2,7 +2,7 @@ package jet; import jet.typeinfo.TypeInfo; -public final class IntRange implements Range, Iterable, JetObject { +public final class IntRange implements Range, IntIterable, JetObject { private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(IntRange.class, false); private final int start; @@ -39,7 +39,7 @@ public final class IntRange implements Range, Iterable, JetObj } @Override - public Iterator iterator() { + public IntIterator iterator() { return new MyIterator(start, count); } @@ -66,7 +66,7 @@ public final class IntRange implements Range, Iterable, JetObj } } - private static class MyIterator implements Iterator { + private static class MyIterator extends IntIterator { private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(MyIterator.class, false); private int cur; @@ -86,7 +86,7 @@ public final class IntRange implements Range, Iterable, JetObj } @Override - public Integer next() { + public int nextInt() { count--; if(reversed) { return cur--; diff --git a/stdlib/src/jet/LongIterable.java b/stdlib/src/jet/LongIterable.java new file mode 100644 index 00000000000..79567c0604b --- /dev/null +++ b/stdlib/src/jet/LongIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface LongIterable extends Iterable { + @Override + LongIterator iterator(); +} diff --git a/stdlib/src/jet/LongRange.java b/stdlib/src/jet/LongRange.java index ed94c76cb31..dea5c70402e 100644 --- a/stdlib/src/jet/LongRange.java +++ b/stdlib/src/jet/LongRange.java @@ -2,7 +2,7 @@ package jet; import jet.typeinfo.TypeInfo; -public final class LongRange implements Range, Iterable, JetObject { +public final class LongRange implements Range, LongIterable, JetObject { private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(IntRange.class, false); private final long start; @@ -39,7 +39,7 @@ public final class LongRange implements Range, Iterable, JetObject { } @Override - public Iterator iterator() { + public LongIterator iterator() { return new MyIterator(start, count); } @@ -66,7 +66,7 @@ public final class LongRange implements Range, Iterable, JetObject { } } - private static class MyIterator implements Iterator { + private static class MyIterator extends LongIterator { private final static TypeInfo typeInfo = TypeInfo.getTypeInfo(MyIterator.class, false); private long cur; @@ -86,7 +86,7 @@ public final class LongRange implements Range, Iterable, JetObject { } @Override - public Long next() { + public long nextLong() { count--; if(reversed) { return cur--; diff --git a/stdlib/src/jet/ShortIterable.java b/stdlib/src/jet/ShortIterable.java new file mode 100644 index 00000000000..9da1721794b --- /dev/null +++ b/stdlib/src/jet/ShortIterable.java @@ -0,0 +1,9 @@ +package jet; + +/** + * @author alex.tkachman + */ +public interface ShortIterable extends Iterable { + @Override + ShortIterator iterator(); +}