summaryrefslogtreecommitdiff
path: root/tests/basics/gen_yield_from_executing.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-05-22 16:54:03 +1000
committerDamien George <damien.p.george@gmail.com>2018-05-22 16:54:03 +1000
commit400273a799581e5eb86538d8c88fb872705475ab (patch)
treeeef7253947cfeabef14cd6223a0c965ccd43d2c8 /tests/basics/gen_yield_from_executing.py
parent771cb359af5242762baa29645c37cafa23c47b25 (diff)
py/objgenerator: Protect against reentering a generator.
Generators that are already executing cannot be reexecuted. This patch puts in a check for such a case. Thanks to @jepler for finding the bug.
Diffstat (limited to 'tests/basics/gen_yield_from_executing.py')
-rw-r--r--tests/basics/gen_yield_from_executing.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/basics/gen_yield_from_executing.py b/tests/basics/gen_yield_from_executing.py
new file mode 100644
index 000000000..cad0c7695
--- /dev/null
+++ b/tests/basics/gen_yield_from_executing.py
@@ -0,0 +1,15 @@
+# yielding from an already executing generator is not allowed
+
+def f():
+ yield 1
+ # g here is already executing so this will raise an exception
+ yield from g
+
+g = f()
+
+print(next(g))
+
+try:
+ next(g)
+except ValueError:
+ print('ValueError')