Merge pull request #3222 from WarriorOfWire/pick_micropython
py/compile: Don't await __aiter__ special method in async-for.
This commit is contained in:
commit
61d1148bb3
@ -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
|
||||
|
@ -6,7 +6,7 @@ class AsyncIteratorWrapper:
|
||||
print('init')
|
||||
self._it = iter(obj)
|
||||
|
||||
async def __aiter__(self):
|
||||
def __aiter__(self):
|
||||
print('aiter')
|
||||
return self
|
||||
|
||||
|
@ -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):
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user