Author: Armin Rigo <[email protected]>
Branch: py3.5
Changeset: r88449:a5e66da0d50f
Date: 2016-11-17 17:03 +0100
http://bitbucket.org/pypy/pypy/changeset/a5e66da0d50f/

Log:    Seems at least this internal exception has both __cause__ and
        __context__ attributes set

diff --git a/pypy/interpreter/generator.py b/pypy/interpreter/generator.py
--- a/pypy/interpreter/generator.py
+++ b/pypy/interpreter/generator.py
@@ -226,6 +226,7 @@
                                 space.wrap("%s raised StopIteration" %
                                            self.KIND))
             e2.chain_exceptions(space, e)
+            e2.set_cause(space, e.get_w_value(space))
             e2.record_context(space, self.frame)
             raise e2
         else:
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
@@ -775,3 +775,17 @@
 """, d)
         f = d['f']
         raises(RuntimeError, next, f(5))
+
+    def test_generator_stop_cause(self):
+        d = {}
+        exec("""from __future__ import generator_stop
+
+def gen1():
+    yield 42
+""", d)
+        my_gen = d['gen1']()
+        assert next(my_gen) == 42
+        stop_exc = StopIteration('spam')
+        e = raises(RuntimeError, my_gen.throw, StopIteration, stop_exc, None)
+        assert e.value.__cause__ is stop_exc
+        assert e.value.__context__ is stop_exc
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to