Skip to content

Commit 0896865

Browse files
committed
py: Fix range to support negative step
1 parent 5e97b9b commit 0896865

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

py/range.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,11 @@ func (it *RangeIterator) M__iter__() (Object, error) {
9898
// Range iterator next
9999
func (it *RangeIterator) M__next__() (Object, error) {
100100
r := it.Index
101-
if r >= it.Stop {
101+
if it.Step >= 0 && r >= it.Stop {
102+
return nil, StopIteration
103+
}
104+
105+
if it.Step < 0 && r <= it.Stop {
102106
return nil, StopIteration
103107
}
104108
it.Index += it.Step

py/tests/range.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
doc="range"
66
a = range(255)
77
b = [e for e in a]
8+
<<<<<<< HEAD
89
assert len(a) == len(b)
910
a = range(5, 100, 5)
1011
b = [e for e in a]
@@ -13,4 +14,7 @@
1314
b = [e for e in a]
1415
assert len(a) == len(b)
1516

16-
doc="finished"
17+
assert len(b) == 255
18+
a = range(100, 0, -1)
19+
b = [e for e in a]
20+
assert len(b) == 100

0 commit comments

Comments
 (0)