From 2ae9cd7d0828ede3c7fd1372b006c90dcdcbd68f Mon Sep 17 00:00:00 2001 From: rocky Date: Sat, 24 Mar 2018 10:52:55 -0400 Subject: [PATCH] bang on CALL_FUNCTION_EX_KW --- test/bytecode_3.6/04_call_function.pyc | Bin 434 -> 0 bytes test/bytecode_3.6_run/04_call_function.pyc | Bin 0 -> 768 bytes uncompyle6/semantics/customize.py | 11 ++++++++--- 3 files changed, 8 insertions(+), 3 deletions(-) delete mode 100644 test/bytecode_3.6/04_call_function.pyc create mode 100644 test/bytecode_3.6_run/04_call_function.pyc diff --git a/test/bytecode_3.6/04_call_function.pyc b/test/bytecode_3.6/04_call_function.pyc deleted file mode 100644 index ebdaeb7efa9703d49ea7d9148b38a6126a54ed5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmYjMu};G<5cN5UTZ+0M#LR}WP^7|!5E5eTLZ>i9ZtRvo(p0u1gk-kPtZeN3l2`tM zi91(FJ?WjFpU>~^rsMJGaWXINfw3R97YXuPggwEeG6jlnp6R6s*aOSOtP=Q2 zF+ik~2cVnsHWi$;f(YC^h}tqz$Z>6;nq{Cj5WcGKw6cDTZ3$c?%=g{ae$xc8G}q2LZ?293ZbaDHwDT;zm^FnTHQr8)mU-&O=f)){svW zc8N;EQE8poxVqIPZlQ@BqHd!(7~*J??^?#|o&#-UqRsHS?Ns0Bn>Z_d9u58g8(Ug? diff --git a/test/bytecode_3.6_run/04_call_function.pyc b/test/bytecode_3.6_run/04_call_function.pyc new file mode 100644 index 0000000000000000000000000000000000000000..82245f92db4c48dcdf85b209cc34e3fbd175a29f GIT binary patch literal 768 zcmZ8ey>8S%5Z+n;8!jl228n_K3ArJNgbqa@1QHZSL8@&m$GaCC*7j+4PbiVoaG~T{ zI(lA!huM}YuRz7jqKJr*W;{Fo=J(s1&B}Z4ehSMO`^BzFg#L3>`xcEXBuIV%g2_n6 z7fgUmWU6`31@9vf^|6S7VT|cSBr=mZVp5f=;jmp~k2$ zQSE&+Q#2(LEcg_E=MpB~!NgA3H@<=MbV@Oq&wXm!52|k}@ae}-jXAbe=3}e$Lgc-2 zjci7K5Df!R3`-f z8iM-UwRL9cx?a_|g(Bw$#)%nhXUM-Kw~Bmz1@Jk+&c;Fcf;_3TYg*c$gfbJdv}hF;;0g!zf;s4#X5AolVH-l4VXf&bkV5X%rFet%nQyrLBMYw0!^xH$-5L2&=8O^o6#IXs7&7bw7TxoR>*efw!W_h{;IppylWl*O{ literal 0 HcmV?d00001 diff --git a/uncompyle6/semantics/customize.py b/uncompyle6/semantics/customize.py index b91314fe..51aa6bca 100644 --- a/uncompyle6/semantics/customize.py +++ b/uncompyle6/semantics/customize.py @@ -489,7 +489,7 @@ def customize_for_version(self, is_pypy, version): self.n_call_ex_kw3 = call_ex_kw3 def call_ex_kw4(node): - """Handle CALL_FUNCTION_EX 2 (have KW) but without + """Handle CALL_FUNCTION_EX {1 or 2} (have KW) but without BUILD_{MAP,TUPLE}_UNPACK_WITH_CALL""" self.preorder(node[0]) self.write('(') @@ -508,8 +508,13 @@ def customize_for_version(self, is_pypy, version): kwargs = node[2] if kwargs == 'expr': kwargs = kwargs[0] - self.write('**') - self.preorder(kwargs) + call_function_ex = node[-1] + assert call_function_ex == 'CALL_FUNCTION_EX_KW' + if call_function_ex.attr & 1 and not isinstance(kwargs, Token): + self.call36_dict(kwargs) + else: + self.write('**') + self.preorder(kwargs) self.write(')') self.prune() self.n_call_ex_kw4 = call_ex_kw4