Skip to content

Commit bddb908

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

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

‎py/sequence.go‎

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

‎vm/tests/generators.py‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ def g2():
2525
yieldi
2626
asserttuple(g2()) == (0,1,2,3,4)
2727

28+
doc="generator 3"
29+
ok=False
30+
try:
31+
list(axforxinrange(10))
32+
exceptNameError:
33+
ok=True
34+
assertok, "NameError not raised"
35+
2836
doc="yield from"
2937
defg3():
3038
yield"potato"

0 commit comments

Comments
(0)