Skip to content

Commit

Permalink
fix ranges not to loop forever if begin > end
Browse files Browse the repository at this point in the history
  • Loading branch information
jckarter committed Oct 29, 2011
1 parent 95dca01 commit 41d694f
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 4 deletions.
8 changes: 4 additions & 4 deletions lib-clay/sequences/lazy/range/range.clay
Expand Up @@ -25,7 +25,7 @@ inline overload iterator(a:Range[T]) = a;
inline overload reverseIterator(a:Range[T]) = ReverseRange(a.end, a.begin);

[T]
inline overload hasNext?(a:Range[T]) = a.begin != a.end;
inline overload hasNext?(a:Range[T]) = a.begin < a.end;

[T]
inline overload next(a:Range[T]) {
Expand Down Expand Up @@ -67,7 +67,7 @@ inline overload iterator(a:ReverseRange[T]) = a;
inline overload reverseIterator(a:ReverseRange[T]) = Range(a.begin, a.end);

[T]
inline overload hasNext?(a:ReverseRange[T]) = a.end != a.begin;
inline overload hasNext?(a:ReverseRange[T]) = a.end > a.begin;

[T]
inline overload next(a:ReverseRange[T]) {
Expand Down Expand Up @@ -151,7 +151,7 @@ inline overload reverseIterator(a:CoordinateRange[T]) =
ReverseCoordinateRange(a.end, a.begin);

[T]
inline overload hasNext?(a:CoordinateRange[T]) = a.begin != a.end;
inline overload hasNext?(a:CoordinateRange[T]) = a.begin < a.end;

[T]
inline overload next(a:CoordinateRange[T]) {
Expand Down Expand Up @@ -194,7 +194,7 @@ inline overload reverseIterator(a:ReverseCoordinateRange[T]) =
CoordinateRange(a.begin, a.end);

[T]
inline overload hasNext?(a:ReverseCoordinateRange[T]) = a.begin != a.end;
inline overload hasNext?(a:ReverseCoordinateRange[T]) = a.begin < a.end;

[T]
inline overload next(a:ReverseCoordinateRange[T]) {
Expand Down
44 changes: 44 additions & 0 deletions test/sequences/ranges/main.clay
@@ -0,0 +1,44 @@
main() {
for (i in range(5))
println(i);
println("---");
for (i in range(1,6))
println(i);
println("---");
for (i in range(1,1))
println(i);
println("---");
for (i in range(1,0))
println(i);
println("---");
for (i in reverseRange(5))
println(i);
println("---");
for (i in reverseRange(6,1))
println(i);
println("---");
for (i in reverseRange(1,1))
println(i);
println("---");
for (i in reverseRange(0,1))
println(i);
println("---");
var v = Vector[Int](0,1,2,3,4,5,6);
for (i in sliced(v,0,5))
println(i);
println("---");
for (i in sliced(v,0,0))
println(i);
println("---");
for (i in sliced(v,1,0))
println(i);
println("---");
for (i in reversed(sliced(v,0,5)))
println(i);
println("---");
for (i in reversed(sliced(v,0,0)))
println(i);
println("---");
for (i in reversed(sliced(v,1,0)))
println(i);
}
43 changes: 43 additions & 0 deletions test/sequences/ranges/out.txt
@@ -0,0 +1,43 @@
0
1
2
3
4
---
1
2
3
4
5
---
---
---
4
3
2
1
0
---
5
4
3
2
1
---
---
---
0
1
2
3
4
---
---
---
4
3
2
1
0
---
---

0 comments on commit 41d694f

Please sign in to comment.