diff --git a/test/bytecode_3.5/08_genexpr.pyc b/test/bytecode_3.5/08_genexpr.pyc new file mode 100644 index 00000000..bb405497 Binary files /dev/null and b/test/bytecode_3.5/08_genexpr.pyc differ diff --git a/test/bytecode_3.5/10_genexpr.pyc b/test/bytecode_3.5/10_genexpr.pyc new file mode 100644 index 00000000..1840f081 Binary files /dev/null and b/test/bytecode_3.5/10_genexpr.pyc differ diff --git a/test/simple_source/expression/08_genexpr.py b/test/simple_source/expression/08_genexpr.py new file mode 100644 index 00000000..3531a14a --- /dev/null +++ b/test/simple_source/expression/08_genexpr.py @@ -0,0 +1,10 @@ +# Bug in Python 3.5.1 calendar.py + +# expr ::= LOAD_NAME +# get_iter ::= expr GET_ITER +# expr ::= get_iter +# genexpr ::= LOAD_GENEXPR LOAD_CONST MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1 +# expr ::= genexpr + +names = (formatmonthname(False) + for k in __file__) diff --git a/test/simple_source/expression/10_genexpr.py b/test/simple_source/expression/10_genexpr.py new file mode 100644 index 00000000..57cc2dd2 --- /dev/null +++ b/test/simple_source/expression/10_genexpr.py @@ -0,0 +1,11 @@ +# From Python 3.4 calendar + +# load_closure ::= LOAD_CLOSURE +# load_closure ::= load_closure LOAD_CLOSURE +# expr ::= LOAD_GLOBAL +# get_iter ::= expr GET_ITER +# genexpr ::= load_closure LOAD_GENEXPR LOAD_CONST MAKE_CLOSURE_0 expr GET_ITER CALL_FUNCTION_ +def formatyear(self, theyear, m=3): + for (i, row) in enumerate(self.yeardays2calendar(theyear, m)): + names = (self.formatmonthname(theyear, k, colwidth, False) + for k in months) diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index a085e16b..72aa926a 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -358,11 +358,10 @@ class Python3Parser(PythonParser): ''' load_genexpr ::= LOAD_GENEXPR load_genexpr ::= BUILD_TUPLE_1 LOAD_GENEXPR LOAD_CONST - ''' - def p_genexpr2(self, args): - ''' + # Is there something general going on here? genexpr ::= LOAD_GENEXPR LOAD_CONST MAKE_FUNCTION_0 expr GET_ITER CALL_FUNCTION_1 + genexpr ::= load_closure LOAD_GENEXPR LOAD_CONST MAKE_CLOSURE_0 expr GET_ITER CALL_FUNCTION_1 ''' def p_expr3(self, args):