From ff73efcf8eb367c9bfe3d6782eb74a5fbe9da30d Mon Sep 17 00:00:00 2001 From: rocky Date: Sat, 13 May 2017 11:39:19 -0400 Subject: [PATCH] Grammar rules for Python 3.6 MAKE_FUNCTION --- test/bytecode_3.6/11_classbug.pyc | Bin 0 -> 486 bytes uncompyle6/parsers/parse3.py | 12 ++++++++++++ 2 files changed, 12 insertions(+) create mode 100644 test/bytecode_3.6/11_classbug.pyc diff --git a/test/bytecode_3.6/11_classbug.pyc b/test/bytecode_3.6/11_classbug.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cf63e8c8ea524498d503bcc3aed2f281d8b03aee GIT binary patch literal 486 zcmZWkJx{|h5Ix(eNGrM^1|%3*v$QI#2(dBIg-S?SPO0spqV$8<8H%#CQYH8kto$Xf z{0k=Tk}3?G^v-AB-Fwg1{eJKL^XlmX0KN%rL{!}o+$p7dFkr-vU}39LVdNtuN>ir| zb*S706&7d)Qn`njFf_f3Q?-W((unuM2~O-{ooC)YSfA-Ub564!2cHb)b7z!1cu~Pt zzQ{^cvQk?m$PMv`F;R6~xwb_iXfVWx^X1$lCQ(p2cOhD43mZDq%vqNzqkSSm7qJ#Z z{DPlLHzyw!-Ks3K9U40ujz&#?T0Rffn}Tgfw!#U-+xdU%gI2b~7FZK8^bi*-QxZ9b zW5m}o%bQM38Ttns+U7Z85fgcx5>Xs+-Q~o;V$|ZXsPE%MhRAQ|)7<%6Y${$0@lB(A JTkp~f`~r?8Z{q*} literal 0 HcmV?d00001 diff --git a/uncompyle6/parsers/parse3.py b/uncompyle6/parsers/parse3.py index e4923696..4b274e01 100644 --- a/uncompyle6/parsers/parse3.py +++ b/uncompyle6/parsers/parse3.py @@ -703,6 +703,18 @@ class Python3Parser(PythonParser): rule = 'unpack_list ::= ' + opname + ' designator' * token.attr elif opname_base.startswith('MAKE_FUNCTION'): # DRY with MAKE_CLOSURE + if self.version >= 3.6: + # The semantics of MAKE_FUNCTION in 3.6 are totally different from + # before. + args_pos, args_kw, annotate_args, closure = token.attr + stack_count = args_pos + args_kw + annotate_args + rule = ('mkfunc ::= %s%s%s%s' % + ('expr ' * stack_count, + 'load_closure ' * closure, + 'LOAD_CONST ' * 2, + opname)) + self.add_unique_rule(rule, opname, token.attr, customize) + continue if self.version < 3.6: args_pos, args_kw, annotate_args = token.attr else: