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