summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/gen_yield_from_close.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basics/gen_yield_from_close.py')
-rw-r--r--tests/basics/gen_yield_from_close.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/basics/gen_yield_from_close.py b/tests/basics/gen_yield_from_close.py
index 674e117a08..d66691ff9c 100644
--- a/tests/basics/gen_yield_from_close.py
+++ b/tests/basics/gen_yield_from_close.py
@@ -99,3 +99,25 @@ try:
g.close()
except RuntimeError:
print('RuntimeError')
+
+# case where close is propagated up to a built-in iterator
+def gen8():
+ g = reversed([2, 1])
+ yield from g
+g = gen8()
+print(next(g))
+g.close()
+
+# case with a user-defined close method
+class Iter:
+ def __iter__(self):
+ return self
+ def __next__(self):
+ return 1
+ def close(self):
+ print('close')
+def gen9():
+ yield from Iter()
+g = gen9()
+print(next(g))
+g.close()