diff options
| author | Scott Shawcroft <scott@adafruit.com> | 2020-07-29 10:54:37 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-29 10:54:37 -0700 |
| commit | 61d1148bb36a022d089af6a4bfb05b96e819d3db (patch) | |
| tree | e5ebe1eb1e8b089a5a5850c2f6f44c5b2c9be50c | |
| parent | 5e86262694d0332f3cb2c9ae67fbf4c70a99ff12 (diff) | |
| parent | 901f3dce6e5e7c1501550ca0b7f3283848194a2e (diff) | |
Merge pull request #3222 from WarriorOfWire/pick_micropython
py/compile: Don't await __aiter__ special method in async-for.
| -rw-r--r-- | py/compile.c | 3 | ||||
| -rw-r--r-- | tests/basics/async_for.py | 2 | ||||
| -rw-r--r-- | tests/basics/async_for2.py | 5 | ||||
| -rw-r--r-- | tests/basics/async_for2.py.exp | 4 |
4 files changed, 5 insertions, 9 deletions
diff --git a/py/compile.c b/py/compile.c index fade4c01a..653aae004 100644 --- a/py/compile.c +++ b/py/compile.c @@ -1741,7 +1741,8 @@ STATIC void compile_async_for_stmt(compiler_t *comp, mp_parse_node_struct_t *pns uint try_finally_label = comp_next_label(comp); compile_node(comp, pns->nodes[1]); // iterator - compile_await_object_method(comp, MP_QSTR___aiter__); + EMIT_ARG(load_method, MP_QSTR___aiter__, false); + EMIT_ARG(call_method, 0, 0, 0); compile_store_id(comp, context); START_BREAK_CONTINUE_BLOCK diff --git a/tests/basics/async_for.py b/tests/basics/async_for.py index 6b4e136d5..5fd054082 100644 --- a/tests/basics/async_for.py +++ b/tests/basics/async_for.py @@ -6,7 +6,7 @@ class AsyncIteratorWrapper: print('init') self._it = iter(obj) - async def __aiter__(self): + def __aiter__(self): print('aiter') return self diff --git a/tests/basics/async_for2.py b/tests/basics/async_for2.py index 025ff9c4d..add74dd38 100644 --- a/tests/basics/async_for2.py +++ b/tests/basics/async_for2.py @@ -1,4 +1,4 @@ -# test waiting within "async for" aiter/anext functions +# test waiting within "async for" __anext__ function import sys if sys.implementation.name in ('micropython', 'circuitpython'): @@ -21,9 +21,8 @@ class ARange: self.cur = 0 self.high = high - async def __aiter__(self): + def __aiter__(self): print('aiter') - print('f returned:', await f(10)) return self async def __anext__(self): diff --git a/tests/basics/async_for2.py.exp b/tests/basics/async_for2.py.exp index 886232f7b..52bbe90c8 100644 --- a/tests/basics/async_for2.py.exp +++ b/tests/basics/async_for2.py.exp @@ -1,9 +1,5 @@ init aiter -f start: 10 -coro yielded: 11 -coro yielded: 12 -f returned: 13 anext f start: 20 coro yielded: 21 |
