Skip to content

Commit 734fbaa

Browse files
corona10ncw
authored andcommitted
py: Fix errors are suppressed in generator comprehensions
Sequence.Iterate does not handle exceptions. Iterate() should return error except StopIteration.
1 parent 0773b68 commit 734fbaa

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

py/sequence.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,13 @@ func Iterate(obj Object, fn func(Object) bool) error {
9393
return err
9494
}
9595
for {
96-
item, finished := Next(iterator)
97-
if finished != nil {
96+
item, err := Next(iterator)
97+
if err == StopIteration {
9898
break
9999
}
100+
if err != nil {
101+
return err
102+
}
100103
if fn(item) {
101104
break
102105
}

vm/tests/generators.py

+8
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ def g2():
2525
yield i
2626
assert tuple(g2()) == (0,1,2,3,4)
2727

28+
doc="generator 3"
29+
ok = False
30+
try:
31+
list(ax for x in range(10))
32+
except NameError:
33+
ok = True
34+
assert ok, "NameError not raised"
35+
2836
doc="yield from"
2937
def g3():
3038
yield "potato"

0 commit comments

Comments
 (0)