[pypy-svn] r9539 - pypy/dist/pypy/interpreter
arigo at codespeak.net
arigo at codespeak.net
Tue Mar 1 14:54:19 CET 2005
Author: arigo
Date: Tue Mar 1 14:54:19 2005
New Revision: 9539
Modified:
pypy/dist/pypy/interpreter/generator.py
Log:
Cleaned up generator.py; moved the 'exhausted' flag to the GeneratorIterator
class.
Modified: pypy/dist/pypy/interpreter/generator.py
==============================================================================
--- pypy/dist/pypy/interpreter/generator.py (original)
+++ pypy/dist/pypy/interpreter/generator.py Tue Mar 1 14:54:19 2005
@@ -17,7 +17,6 @@
def run(self):
"Build a generator-iterator."
- self.exhausted = False
return self.space.wrap(GeneratorIterator(self))
### extra opcodes ###
@@ -42,6 +41,7 @@
self.space = frame.space
self.frame = frame
self.running = False
+ self.exhausted = False
def descr__iter__(self):
return self.space.wrap(self)
@@ -51,18 +51,15 @@
if self.running:
raise OperationError(space.w_ValueError,
space.wrap('generator already executing'))
- if self.frame.exhausted:
+ if self.exhausted:
raise OperationError(space.w_StopIteration, space.w_None)
self.running = True
try:
try:
return self.frame.resume()
- except OperationError, e:
- self.frame.exhausted = True
- if e.match(self.space, self.space.w_StopIteration):
- raise OperationError(space.w_StopIteration, space.w_None)
- else:
- raise
+ except OperationError:
+ self.exhausted = True
+ raise
finally:
self.running = False
@@ -80,5 +77,4 @@
class SGeneratorReturn(ControlFlowException):
"""Signals a 'return' statement inside a generator."""
def emptystack(self, frame):
- frame.exhausted = True
raise OperationError(frame.space.w_StopIteration, frame.space.w_None)
More information about the Pypy-commit
mailing list