diff --git a/test/bytecode_3.1_run/03_comprehension_in_lambda.pyc b/test/bytecode_3.1_run/03_comprehension_in_lambda.pyc new file mode 100644 index 00000000..983f747d Binary files /dev/null and b/test/bytecode_3.1_run/03_comprehension_in_lambda.pyc differ diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index e43f07b1..2d68da9c 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -81,9 +81,17 @@ class Python3Parser(PythonParser): set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST + set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter + JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER + set_comp_func ::= BUILD_SET_0 LOAD_FAST FOR_ITER store comp_iter + JUMP_BACK RETURN_VALUE RETURN_LAST + set_comp_func ::= BUILD_SET_0 LOAD_FAST FOR_ITER store comp_iter + JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter COME_FROM JUMP_BACK RETURN_VALUE RETURN_LAST + set_comp_func ::= BUILD_SET_0 LOAD_ARG FOR_ITER store comp_iter + COME_FROM JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER comp_body ::= dict_comp_body comp_body ::= set_comp_body @@ -101,6 +109,12 @@ class Python3Parser(PythonParser): stmt ::= dict_comp_func dict_comp_func ::= BUILD_MAP_0 LOAD_ARG FOR_ITER store comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST + dict_comp_func ::= BUILD_MAP_0 LOAD_ARG FOR_ITER store + comp_iter JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER + dict_comp_func ::= BUILD_MAP_0 LOAD_FAST FOR_ITER store + comp_iter JUMP_BACK RETURN_VALUE RETURN_LAST + dict_comp_func ::= BUILD_MAP_0 LOAD_FAST FOR_ITER store + comp_iter JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER comp_iter ::= comp_if_not comp_if_not ::= expr jmp_true comp_iter diff --git a/uncompyle6/parsers/parse30.py b/uncompyle6/parsers/parse30.py index f1d2546c..03dc7e6d 100644 --- a/uncompyle6/parsers/parse30.py +++ b/uncompyle6/parsers/parse30.py @@ -77,11 +77,11 @@ class Python30Parser(Python31Parser): set_comp_func ::= set_comp_header LOAD_ARG FOR_ITER store comp_iter - JUMP_BACK COME_FROM POP_TOP JUMP_BACK + JUMP_BACK RETURN_VALUE RETURN_LAST set_comp_func ::= set_comp_header LOAD_ARG FOR_ITER store comp_iter - JUMP_BACK COME_FROM POP_TOP JUMP_BACK + JUMP_BACK RETURN_VALUE_LAMBDA LAMBDA_MARKER list_comp_header ::= BUILD_LIST_0 DUP_TOP STORE_FAST