[pypy-commit] pypy py3k: fix test_raise.test_with_reraise_2 by restoring the current exception after having called contetmanager's __exit__()

antocuni noreply at buildbot.pypy.org
Fri Sep 21 19:13:44 CEST 2012


Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: py3k
Changeset: r57456:67917d247fa5
Date: 2012-09-21 19:13 +0200
http://bitbucket.org/pypy/pypy/changeset/67917d247fa5/

Log:	fix test_raise.test_with_reraise_2 by restoring the current
	exception after having called contetmanager's __exit__()

diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -924,6 +924,7 @@
                       isinstance(unroller, SApplicationException))
         if is_app_exc:
             operr = unroller.operr
+            old_last_exception = self.last_exception
             self.last_exception = operr
             w_traceback = self.space.wrap(operr.get_traceback())
             w_suppress = self.call_contextmanager_exit_function(
@@ -931,6 +932,7 @@
                 operr.w_type,
                 operr.get_w_value(self.space),
                 w_traceback)
+            self.last_exception = old_last_exception
             if self.space.is_true(w_suppress):
                 # __exit__() returned True -> Swallow the exception.
                 self.settopvalue(self.space.w_None)


More information about the pypy-commit mailing list