Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r72713:380497b41b43 Date: 2014-08-07 20:44 +0200 http://bitbucket.org/pypy/pypy/changeset/380497b41b43/
Log: Test and fix (the code in module/pypyjit was already doing that correctly) diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py --- a/pypy/interpreter/pyopcode.py +++ b/pypy/interpreter/pyopcode.py @@ -61,6 +61,7 @@ while True: next_instr = self.handle_bytecode(co_code, next_instr, ec) except ExitFrame: + self.last_exception = None return self.popvalue() def handle_bytecode(self, co_code, next_instr, ec): diff --git a/pypy/interpreter/test/test_generator.py b/pypy/interpreter/test/test_generator.py --- a/pypy/interpreter/test/test_generator.py +++ b/pypy/interpreter/test/test_generator.py @@ -280,6 +280,20 @@ raise StopIteration assert tuple(f()) == (1,) + def test_exception_is_cleared_by_yield(self): + def f(): + try: + foobar + except NameError: + yield 5 + raise # should raise "no active exception to re-raise" + gen = f() + gen.next() # --> 5 + try: + gen.next() + except TypeError: + pass + def test_should_not_inline(space): from pypy.interpreter.generator import should_not_inline _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit