From acb4ffb7582e4726cae2d3bf185fb56bf6dcb34f Mon Sep 17 00:00:00 2001 From: rocky Date: Wed, 29 Nov 2017 16:39:32 -0500 Subject: [PATCH] Better grammar coverage; reduce 3.x mklambda rules --- test/bytecode_2.1/00_import.pyc | Bin 355 -> 463 bytes test/bytecode_2.2/00_import.pyc | Bin 355 -> 463 bytes test/bytecode_2.3/00_import.pyc | Bin 347 -> 449 bytes test/bytecode_2.4/00_import.pyc | Bin 322 -> 423 bytes test/bytecode_2.5/00_import.pyc | Bin 323 -> 422 bytes test/bytecode_2.6/00_import.pyc | Bin 323 -> 422 bytes test/bytecode_2.7/00_import.pyc | Bin 323 -> 420 bytes test/bytecode_3.3/00_import.pyc | Bin 335 -> 427 bytes test/bytecode_3.4/00_import.pyc | Bin 280 -> 354 bytes test/bytecode_3.5/00_import.pyc | Bin 280 -> 351 bytes test/bytecode_3.5/01_ops.pyc | Bin 0 -> 337 bytes test/bytecode_3.6/00_import.pyc | Bin 257 -> 316 bytes test/simple_source/bug30/01_ops.py | 3 +++ test/simple_source/stmts/00_import.py | 5 +++- uncompyle6/parsers/parse3.py | 37 ++++++++++++++++---------- 15 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 test/bytecode_3.5/01_ops.pyc diff --git a/test/bytecode_2.1/00_import.pyc b/test/bytecode_2.1/00_import.pyc index fed3667a7bdd6f497927ecbaa362ef60eec1ef0c..f3f3da8218fce95c07d8189c19fda777928d43bc 100644 GIT binary patch delta 241 zcmXAhy$%6U5QWd|`dvRO5jvr>Q3#$yqSGvPuehuwncFC23ypT;!8G1L=_QP7k~#Cu zoSAt$Pq#h#G`!cazloqTz@^rbVWCkE$0^;JpiNXP@DGUt38q7ehp9UjHkOfE-B$i}AcpxDy z4bF)>6ZAD$LDC?V`Nf9CAWlhUZmMB17m$@vQc{qdlbM=V0@pvep3#Aa11QJOD8R_Y HD9Q)`xHK71 diff --git a/test/bytecode_2.2/00_import.pyc b/test/bytecode_2.2/00_import.pyc index 3d9fbd01c00f0372ae716e87f23368167bd411ae..96dce7df976bb002aeb6365faa39049ef34c446a 100644 GIT binary patch delta 199 zcmaFNbe>sQ_bo5i6?OTjWCkE$0^;J@iNXO!_3R9(oD8X449$!TDa;I6Obq#A42<=h z3@Ho@+1w17JPet<3{iXxd5jEa^d TJU|XVqW~ipqbMUkqZkta76XY~lLDC?V#g)ZyWnh8)V#CRKjDb8HKuLZ^0Y)xHQAPmxmlOp6 diff --git a/test/bytecode_2.3/00_import.pyc b/test/bytecode_2.3/00_import.pyc index e2755523945a35842a774f9222ed630b195595d1..5701ad7b80dd1498d014d8d6168cda52d4499ea9 100644 GIT binary patch delta 211 zcmcc3bdXuv`V%kL6?OTjWCkc;0@4mZT%0;l+D<2xlOdIhp_!2(g_$9Xi6LK@fiZ=F zA)A{alZPRbmm!LeA&(I(6s*BAF|k9B)|Xw delta 134 zcmX@ee49zy`V%jg@^rbVWCkc;0@4mZTx>s4+DBh0?Yy_4FahOVxIWLNq`5);$-AyWM>p&s4+D1}fy|uLyb_S1@$qSy tIjQmSC9FVBqF$0-atR}ll>{as?39Tg-2`}mf;@}@j9iQojQotkOaM?M9k~Di delta 68 zcmZ3+e3(gk^Cw;|<>_)!$qZ1y4x}A`xHxd4bO2ilBSWwT%fwkqOd6aM564UnV07c* P0Lt<(3NUgpN-zQd?eq+M diff --git a/test/bytecode_2.6/00_import.pyc b/test/bytecode_2.6/00_import.pyc index ec02a67b017eed9319f5fa1d2b1bca7e65492195..5425f49f0edcf8d1d545fd938614eba89b8aa68b 100644 GIT binary patch delta 167 zcmX@iw2WE$;wN6NE9&x5$qZ1y0i+#(xVUPfbbx*;CqpV1Lo*{o3JXIP6GOfj17ivU zLkc59Ha9~i4?`v|LlhrF9wShcks(-vbz-3sdnU*r4gQH!V+>1}fy|uLyb_S1@$qSy tIjQmSC9FVBqF$0-atR}ll>{as?39Tg-2`}mf;@}@j9iQojQotkOaNmb9oGN= delta 68 zcmZ3+e3(i4;wN4%<>_)!$qZ1y4x}A`xHxd4bO2ilBSWwT%fwkqOd6aM564UnV07c* P0Lt<(3NUgpN-zQd^;Qg; diff --git a/test/bytecode_2.7/00_import.pyc b/test/bytecode_2.7/00_import.pyc index 38f74f6b46c66d0bdadb425495241a084fbd899e..62d8bd7701bf8e10da0197419745fe7240309cbc 100644 GIT binary patch delta 165 zcmX@iw1ioj`73A%%e< zg^?kLn<0ybA&ZwGijN@=EE252Icp0Mj81fh<7HKi^Pn?@zSjr64nUk7V$^oR~HU!DhEuQrOC)S@kqktP)0W%4xlIx LqW~ipqXZ)WpzI43 diff --git a/test/bytecode_3.4/00_import.pyc b/test/bytecode_3.4/00_import.pyc index 4a455a04a55375ca4216f310c0c56ee3ff77af15..6174ea0acb495361b997c55bb5d901b7553a3fcc 100644 GIT binary patch delta 174 zcmbQi^oU9M9S<+p6?OTjp9~BPkAWBtn1Cz?ATF+$s2t#w%E^$*#n8;ikix)_&BRbt z0%D{vGURYGWbrU$@iIj5G30?of;CxQf(-G~WW2>vkXVudq#3m|`6u={YTRPZNzJ>( z5g(tHnUfkHAH|xem!y|`i!tdIBalp4$xy@%)LFzm@rH>250J&fD8R_YD8b0jD8vK+ Deeos8 delta 78 zcmaFFG=oX`9S<*;@^rbVDh39I$3P4ROhA?c5ElndR1TOpONxcp0MjK-^$WmX{zC{4^PFu@oehWB_SKElvK3eU2Kpm~&F|ZgIrN zr)B1(#>YpoCh8^WCEsF9y2S`2Q&ut*aRYT0aZkKqBESP=@h}Q7axqFU@-qrC0RWj+ BBzFJ+ delta 101 zcmcc5G=oW5jF*>7dAeLw6$1mqV<3hDCLqfJh>HU!DhEiXFfs&dvb+Sz`e`!WVkt;0 n$pF%fTAG{_H#u^yWGG?-N)@q9mS!~J;Q%su7zG%)7$q11i`)?& diff --git a/test/bytecode_3.5/01_ops.pyc b/test/bytecode_3.5/01_ops.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9166a5c3c0819882432d636758702156218696d2 GIT binary patch literal 337 zcmWgR<>mS!Eg$uhk%8ec0}@~ZvK@f9cruVk;b4ejU`Pcr7#U=tEG7nPxR^7P#mwLX zXL-YAW#BAdILi;n0veXW%#gyukix`}!pe}&$`Azlq_8stYjVBh0=n!a(A^9#SwI96h+qa0tRMo28T^Vs(wfXgAh{xtsv?k_Cetm( z%3F*TD;bJFW`K!bvc;LX1v#nl#rdU0$*KBDrRl~7`UZya`31##1(mlrY;yBcN^?@} UKmk)M1|--RxlkdqD5C%)0EVwOg8%>k literal 0 HcmV?d00001 diff --git a/test/bytecode_3.6/00_import.pyc b/test/bytecode_3.6/00_import.pyc index c903cd671fcacbcf2216044025927dba845358be..9326c33bfe8f442ea9e50b02b8b60d3a3543ad5d 100644 GIT binary patch delta 137 zcmZo<+QX!5%*)GlMO{AXCj$e+V<3hDCLqfJh>L?JDqBjVa;9=MGo~-8HSZQje0*AFPHKF76l2TcTcfGiG19!3sE0Y)xH9wq=7EFNkA delta 100 zcmdnP)X1c4%*)HAJY6oTih+UQF%ZK66OiQq#Kl$ j and tokens[i-j] == 'LOAD_LAMBDA'): + rule_pat = ('mklambda ::= %sload_closure LOAD_LAMBDA %%s%s' % + ('pos_arg '* args_pos, opname)) + self.add_make_function_rule(rule_pat, opname, token.attr, customize) if has_get_iter_call_function1: rule_pat = ("generator_exp ::= %sload_closure load_genexpr %%s%s expr " @@ -889,11 +893,12 @@ class Python3Parser(PythonParser): "GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname)) self.add_make_function_rule(rule_pat, opname, token.attr, customize) - rule_pat = ('mklambda ::= %s%sLOAD_LAMBDA %%s%s' % - (('pos_arg '* args_pos), - ('kwarg '* args_kw), - opname)) - self.add_make_function_rule(rule_pat, opname, token.attr, customize) + if is_pypy or (i > 2 and tokens[i-2] == 'LOAD_LAMBDA'): + rule_pat = ('mklambda ::= %s%sLOAD_LAMBDA %%s%s' % + (('pos_arg '* args_pos), + ('kwarg '* args_kw), + opname)) + self.add_make_function_rule(rule_pat, opname, token.attr, customize) if seen_LOAD_LISTCOMP and has_get_iter_call_function1: rule_pat = ("listcomp ::= %sLOAD_LISTCOMP %%s%s expr " "GET_ITER CALL_FUNCTION_1" % ('expr ' * args_pos, opname)) @@ -908,11 +913,15 @@ class Python3Parser(PythonParser): rule_pat = ("generator_exp ::= %sload_genexpr %%s%s expr " "GET_ITER CALL_FUNCTION_1" % ('pos_arg '* args_pos, opname)) self.add_make_function_rule(rule_pat, opname, token.attr, customize) - rule_pat = ('mklambda ::= %s%sLOAD_LAMBDA %%s%s' % - (('pos_arg '* args_pos), - ('kwarg '* args_kw), - opname)) - self.add_make_function_rule(rule_pat, opname, token.attr, customize) + + # FIXME: Fold test into add_make_function_rule + j = 1 if self.version < 3.3 else 2 + if is_pypy or (i > j and tokens[i-j] == 'LOAD_LAMBDA'): + rule_pat = ('mklambda ::= %s%sLOAD_LAMBDA %%s%s' % + (('pos_arg '* args_pos), + ('kwarg '* args_kw), + opname)) + self.add_make_function_rule(rule_pat, opname, token.attr, customize) if seen_LOAD_LISTCOMP and has_get_iter_call_function1: rule_pat = ("listcomp ::= %sLOAD_LISTCOMP %%s%s expr "