diff --git a/test/bytecode_2.7/05_abc_class.pyc b/test/bytecode_2.7/05_abc_class.pyc new file mode 100644 index 00000000..b102a340 Binary files /dev/null and b/test/bytecode_2.7/05_abc_class.pyc differ diff --git a/test/bytecode_pypy3.2/05_abc_class.pyc-notyet b/test/bytecode_pypy3.2/05_abc_class.pyc similarity index 100% rename from test/bytecode_pypy3.2/05_abc_class.pyc-notyet rename to test/bytecode_pypy3.2/05_abc_class.pyc diff --git a/uncompyle6/parsers/parse2.py b/uncompyle6/parsers/parse2.py index c47ae621..d500382f 100644 --- a/uncompyle6/parsers/parse2.py +++ b/uncompyle6/parsers/parse2.py @@ -248,7 +248,7 @@ class Python2Parser(PythonParser): expr ::= expr {expr}^n CALL_FUNCTION_KW_n POP_TOP For PYPY: - load_attr ::= LOAD_FAST LOOKUP_METHOD + load_attr ::= expr LOOKUP_METHOD call_function ::= expr CALL_METHOD ''' for opname, v in list(customize.items()): @@ -268,9 +268,7 @@ class Python2Parser(PythonParser): 'expr32 '*thirty32s + 'expr '*(v%32) + opname) elif opname == 'LOOKUP_METHOD': # A PyPy speciality - DRY with parse3 - self.add_unique_rule("load_attr ::= LOAD_FAST LOOKUP_METHOD", - opname, v, customize) - self.add_unique_rule("load_attr ::= LOAD_NAME LOOKUP_METHOD", + self.add_unique_rule("load_attr ::= expr LOOKUP_METHOD", opname, v, customize) continue elif opname == 'JUMP_IF_NOT_DEBUG': diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index 95dc38e1..7e53ab38 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -433,7 +433,7 @@ class Python3Parser(PythonParser): mklambda ::= {pos_arg}^n LOAD_LAMBDA [LOAD_CONST] MAKE_FUNCTION_n For PYPY: - load_attr ::= LOAD_FAST LOOKUP_METHOD + load_attr ::= expr LOOKUP_METHOD call_function ::= expr CALL_METHOD """ for i, token in enumerate(tokens): @@ -464,9 +464,7 @@ class Python3Parser(PythonParser): self.add_unique_rule(rule, opname, token.attr, customize) elif opname == 'LOOKUP_METHOD': # A PyPy speciality - DRY with parse2 - self.add_unique_rule("load_attr ::= LOAD_FAST LOOKUP_METHOD", - opname, token.attr, customize) - self.add_unique_rule("load_attr ::= LOAD_NAME LOOKUP_METHOD", + self.add_unique_rule("load_attr ::= expr LOOKUP_METHOD", opname, token.attr, customize) continue elif opname == 'JUMP_IF_NOT_DEBUG':