From eba343dd849fbbe014127c57741a5c09df6b6681 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Fri, 6 Jan 2012 14:32:14 +0200 Subject: [PATCH] negative steps supported --- stdlib/src/jet/ByteRange.java | 5 ++++- stdlib/src/jet/CharRange.java | 5 ++++- stdlib/src/jet/IntRange.java | 5 ++++- stdlib/src/jet/LongRange.java | 5 ++++- stdlib/src/jet/ShortRange.java | 5 ++++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/stdlib/src/jet/ByteRange.java b/stdlib/src/jet/ByteRange.java index b61679c79e7..4210b7d9f5f 100644 --- a/stdlib/src/jet/ByteRange.java +++ b/stdlib/src/jet/ByteRange.java @@ -37,7 +37,10 @@ public final class ByteRange implements Range, ByteIterable, JetObject { } public ByteIterator step(int step) { - return new MyIterator(start, count, step); + if(step < 0) + return new MyIterator(getEnd(), -count, -step); + else + return new MyIterator(start, count, step); } public ByteRange minus() { diff --git a/stdlib/src/jet/CharRange.java b/stdlib/src/jet/CharRange.java index ff94c99239c..53b41a5d542 100644 --- a/stdlib/src/jet/CharRange.java +++ b/stdlib/src/jet/CharRange.java @@ -41,7 +41,10 @@ public final class CharRange implements Range, CharIterable, JetObjec } public CharIterator step(int step) { - return new MyIterator(start, count, step); + if(step < 0) + return new MyIterator(getEnd(), -count, -step); + else + return new MyIterator(start, count, step); } @Override diff --git a/stdlib/src/jet/IntRange.java b/stdlib/src/jet/IntRange.java index 9b722639436..0bc52ada3c5 100644 --- a/stdlib/src/jet/IntRange.java +++ b/stdlib/src/jet/IntRange.java @@ -21,7 +21,10 @@ public final class IntRange implements Range, IntIterable, JetObject { } public IntIterator step(int step) { - return new MyIterator(start, count, step); + if(step < 0) + return new MyIterator(getEnd(), -count, -step); + else + return new MyIterator(start, count, step); } public boolean getIsReversed() { diff --git a/stdlib/src/jet/LongRange.java b/stdlib/src/jet/LongRange.java index abcb921ca87..6785f9ecded 100644 --- a/stdlib/src/jet/LongRange.java +++ b/stdlib/src/jet/LongRange.java @@ -12,7 +12,10 @@ public final class LongRange implements Range, LongIterable, JetObject { } public LongIterator step(long step) { - return new MyIterator(start, count, step); + if(step < 0) + return new MyIterator(getEnd(), -count, -step); + else + return new MyIterator(start, count, step); } @Override diff --git a/stdlib/src/jet/ShortRange.java b/stdlib/src/jet/ShortRange.java index 79428f90702..a3c95dd7258 100644 --- a/stdlib/src/jet/ShortRange.java +++ b/stdlib/src/jet/ShortRange.java @@ -12,7 +12,10 @@ public final class ShortRange implements Range, ShortIterable, JetObject } public ShortIterator step(int step) { - return new MyIterator(start, count, step); + if(step < 0) + return new MyIterator(getEnd(), -count, -step); + else + return new MyIterator(start, count, step); } @Override