diff --git a/test/bytecode_2.6/06_setif_comprehension.pyc b/test/bytecode_2.6/06_setif_comprehension.pyc new file mode 100644 index 00000000..11c0222e Binary files /dev/null and b/test/bytecode_2.6/06_setif_comprehension.pyc differ diff --git a/test/simple_source/bug26/06_setif_comprehension.py b/test/simple_source/bug26/06_setif_comprehension.py new file mode 100644 index 00000000..dce585ae --- /dev/null +++ b/test/simple_source/bug26/06_setif_comprehension.py @@ -0,0 +1,9 @@ +# From 2.6.9 abc.py + +# For 2.6: +# genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter JUMP_BACK come_from_pop JUMP_BACK POP_BLOCK COME_FROM + +# This has been a bug in other Pythons after 2.6 were set comprehension {} is used instead of set(). +abstracts = set(name + for name, value in namespace.items() + if getattr(value, "__isabstractmethod__", False)) diff --git a/test/simple_source/comprehension/06_setif_comprehension.py b/test/simple_source/bug27+/06_setif_comprehension.py similarity index 100% rename from test/simple_source/comprehension/06_setif_comprehension.py rename to test/simple_source/bug27+/06_setif_comprehension.py diff --git a/uncompyle6/parsers/parse26.py b/uncompyle6/parsers/parse26.py index 2177e931..d4bc8c62 100644 --- a/uncompyle6/parsers/parse26.py +++ b/uncompyle6/parsers/parse26.py @@ -130,6 +130,7 @@ class Python26Parser(Python2Parser): # Make sure we keep indices the same as 2.7 setup_loop_lf ::= SETUP_LOOP LOAD_FAST genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter JUMP_BACK POP_BLOCK COME_FROM + genexpr_func ::= setup_loop_lf FOR_ITER designator comp_iter JUMP_BACK come_from_pop JUMP_BACK POP_BLOCK COME_FROM ''' def p_ret26(self, args):