[pypy-commit] pypy py3.6: Add test and implementation for async generator ignoring GeneratorExit.

mjacob pypy.commits at gmail.com
Tue Jul 18 13:57:01 EDT 2017


Author: Manuel Jacob <me at manueljacob.de>
Branch: py3.6
Changeset: r91919:958a9c75a085
Date: 2017-07-18 19:56 +0200
http://bitbucket.org/pypy/pypy/changeset/958a9c75a085/

Log:	Add test and implementation for async generator ignoring
	GeneratorExit.

diff --git a/pypy/interpreter/generator.py b/pypy/interpreter/generator.py
--- a/pypy/interpreter/generator.py
+++ b/pypy/interpreter/generator.py
@@ -713,7 +713,8 @@
                     w_value = self.async_gen.throw(space.w_GeneratorExit,
                                                    None, None)
                     if w_value is not None:
-                        XXX
+                        raise oefmt(space.w_RuntimeError,
+                                    "async generator ignored GeneratorExit")
                 else:
                     w_value = self.async_gen.throw(self.w_exc_type,
                                                    self.w_exc_value,
diff --git a/pypy/interpreter/test/test_coroutine.py b/pypy/interpreter/test/test_coroutine.py
--- a/pypy/interpreter/test/test_coroutine.py
+++ b/pypy/interpreter/test/test_coroutine.py
@@ -470,3 +470,18 @@
             pass
         assert raises_generator_exit
     """
+
+    def test_async_aclose_ignore_generator_exit(self): """
+        async def ag():
+            try:
+                yield
+            except GeneratorExit:
+                yield
+
+        async def run():
+            a = ag()
+            async for i in a:
+                break
+            await a.aclose()
+        raises(RuntimeError, run().send, None)
+    """


More information about the pypy-commit mailing list