From 810649799cb8b0268352b5f83102cda89bc90d01 Mon Sep 17 00:00:00 2001 From: rocky Date: Thu, 20 Apr 2017 12:39:15 -0400 Subject: [PATCH] Add async for with pass statement Fixes #109 --- test/bytecode_3.5/02_async_for.pyc | Bin 0 -> 283 bytes test/simple_source/bug35/02_async_for.py | 3 +++ uncompyle6/parsers/parse35.py | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test/bytecode_3.5/02_async_for.pyc create mode 100644 test/simple_source/bug35/02_async_for.py diff --git a/test/bytecode_3.5/02_async_for.pyc b/test/bytecode_3.5/02_async_for.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2908f7d3bd073ef7300895305c627bcadb00846 GIT binary patch literal 283 zcmWgR<>e}W_#?uMfq~&M5W@izkmUfx#R5Pg1&A0KS{N9jfD9&vU`^&^kUR*0XdWOw z48+A2K%&Bsp@xyc2&l!Ql83<|RYykyUk)S|?a%=|n}rdy0jw-}RGG8C}@&HtrboS9pYlNw)~ zUs{x$s-IMvZfvS=U=*JS(iNYUU!+%1d5bZT5#%6{1_nl5#v(Q#4KyE2gN;EVSb=i4 RIBatBQ%ZAE?ZEm#+5jj_H>Usq literal 0 HcmV?d00001 diff --git a/test/simple_source/bug35/02_async_for.py b/test/simple_source/bug35/02_async_for.py new file mode 100644 index 00000000..7b250d35 --- /dev/null +++ b/test/simple_source/bug35/02_async_for.py @@ -0,0 +1,3 @@ +async def a(b, c): + async for b in c: + pass diff --git a/uncompyle6/parsers/parse35.py b/uncompyle6/parsers/parse35.py index 06be742f..0c7cc944 100644 --- a/uncompyle6/parsers/parse35.py +++ b/uncompyle6/parsers/parse35.py @@ -68,20 +68,31 @@ class Python35Parser(Python34Parser): GET_AWAITABLE LOAD_CONST YIELD_FROM WITH_CLEANUP_FINISH END_FINALLY - stmt ::= async_for_stmt async_for_stmt ::= SETUP_LOOP expr GET_AITER LOAD_CONST YIELD_FROM SETUP_EXCEPT GET_ANEXT LOAD_CONST YIELD_FROM designator - POP_BLOCK JUMP_FORWARD COME_FROM_EXCEPT DUP_TOP + POP_BLOCK jump_except COME_FROM_EXCEPT DUP_TOP LOAD_GLOBAL COMPARE_OP POP_JUMP_IF_FALSE POP_TOP POP_TOP POP_TOP POP_EXCEPT POP_BLOCK JUMP_ABSOLUTE END_FINALLY COME_FROM for_block POP_BLOCK JUMP_ABSOLUTE opt_come_from_loop + async_for_stmt ::= SETUP_LOOP expr + GET_AITER + LOAD_CONST YIELD_FROM SETUP_EXCEPT GET_ANEXT LOAD_CONST + YIELD_FROM + designator + POP_BLOCK jump_except COME_FROM_EXCEPT DUP_TOP + LOAD_GLOBAL COMPARE_OP POP_JUMP_IF_FALSE + POP_TOP POP_TOP POP_TOP POP_EXCEPT POP_BLOCK + JUMP_ABSOLUTE END_FINALLY JUMP_BACK + passstmt POP_BLOCK JUMP_ABSOLUTE + opt_come_from_loop + stmt ::= async_forelse_stmt async_forelse_stmt ::= SETUP_LOOP expr GET_AITER