diff --git a/test/bytecode_3.5/02_for_else_bug.pyc b/test/bytecode_3.5/02_for_else_bug.pyc new file mode 100644 index 00000000..ace42316 Binary files /dev/null and b/test/bytecode_3.5/02_for_else_bug.pyc differ diff --git a/test/simple_source/bug35/02_for_else_bug.py b/test/simple_source/bug35/02_for_else_bug.py new file mode 100644 index 00000000..c8f85ad8 --- /dev/null +++ b/test/simple_source/bug35/02_for_else_bug.py @@ -0,0 +1,10 @@ +# Adapted 3.5 from _bootstrap_external.py + + +def spec_from_file_location(loader, location): + if loader: + for _ in __file__: + if location: + break + else: + return None diff --git a/uncompyle6/parsers/parse35.py b/uncompyle6/parsers/parse35.py index fd2bd5cc..e5bc9b10 100644 --- a/uncompyle6/parsers/parse35.py +++ b/uncompyle6/parsers/parse35.py @@ -111,6 +111,8 @@ class Python35Parser(Python34Parser): return_if_stmt ::= return_expr RETURN_END_IF POP_BLOCK return_if_lambda ::= RETURN_END_IF_LAMBDA COME_FROM + return ::= return_expr RETURN_END_IF + jb_else ::= JUMP_BACK ELSE ifelsestmtc ::= testexpr c_stmts_opt JUMP_FORWARD else_suitec ifelsestmtl ::= testexpr c_stmts_opt jb_else else_suitel diff --git a/uncompyle6/semantics/consts.py b/uncompyle6/semantics/consts.py index 7b9cd7d1..7ea9967b 100644 --- a/uncompyle6/semantics/consts.py +++ b/uncompyle6/semantics/consts.py @@ -431,7 +431,7 @@ TABLE_DIRECT = { "mkfuncdeco": ("%|@%c\n%c", (0, "expr"), 1), # A custom rule in n_function def distinguishes whether to call this or # function_def_async - "mkfuncdeco0": ("%|def %c\n", (0, "mkfunc")), + "mkfuncdeco0": ("%|def %c\n", (0, ("mkfunc", "mkfunc_annotate"))), # In cases where we desire an explict new line. # After docstrings which are followed by a "def" is