[pypy-dev] help fully fixing generators...?
aleaxit at yahoo.com
Mon Dec 22 01:32:55 CET 2003
enumerate currently does not work -- and it does not work because generators
(which enumerate, implemented at app level, uses) don't behave correctly
when a StopIteration is raised -- they propagate it (propagate the
OperationError, at interpreter level) rather than turning it into a "clean
return from the generator" (a SGeneratorReturn, at interpreter level). I
easily fixed it for a simple "raise StopIteration" in the generator itself,
and committed that change (as well as the unit-test showing the bug
existed), but I'm not sure where to edit to fix it when the StopIteration
is being PROPAGATED from a call to something.next() in the generator, which
is what enumerate needs.
I haven't checked in a unit test showing the problem, but, basically, the
issue is something like:
it = iter('ciao')
while 1: yield it.next()
in CPython this works fine, but in pypy it currently doesn't (yet).
More information about the Pypy-dev