[pypy-commit] pypy py3.5-corowrapper: Test and fix

arigo pypy.commits at gmail.com
Sat Sep 17 13:52:39 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: py3.5-corowrapper
Changeset: r87188:42c3a9990f34
Date: 2016-09-17 19:52 +0200
http://bitbucket.org/pypy/pypy/changeset/42c3a9990f34/

Log:	Test and fix

diff --git a/pypy/interpreter/pyopcode.py b/pypy/interpreter/pyopcode.py
--- a/pypy/interpreter/pyopcode.py
+++ b/pypy/interpreter/pyopcode.py
@@ -1505,7 +1505,8 @@
                 u"'%s' implements legacy __aiter__ protocol; "
                 u"__aiter__ should return an asynchronous "
                 u"iterator, not awaitable" %
-                    space.type(w_obj).name.decode('utf-8')))
+                    space.type(w_obj).name.decode('utf-8')),
+                space.w_PendingDeprecationWarning)
         self.pushvalue(w_awaitable)
 
     def GET_ANEXT(self, oparg, next_instr):
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
@@ -31,3 +31,21 @@
         else:
             assert False, "should have raised"
         """
+
+    def test_async_for_old_style(self): """
+        class X:
+            def __aiter__(self):
+                return MyAIter()
+        class MyAIter:
+            def __await__(self):
+                return iter([20, 30])
+        async def f(x):
+            sum = 0
+            async for a in x:
+                sum += a
+                if sum > 100:
+                    break
+            return sum
+        cr = f(X())
+        assert next(cr.__await__()) == 20
+        """


More information about the pypy-commit mailing list