From 2f3b5e53d4cd8ac893ab10f8e96957590dac1313 Mon Sep 17 00:00:00 2001 From: Bo Xuan Date: Wed, 24 Aug 2022 16:19:39 +0800 Subject: [PATCH] Add test case --- .../bytecode_3.7_run/10_extendedargifelse.pyc | Bin 0 -> 2777 bytes .../bug37/10_extendedargifelse.py | 264 ++++++++++++++++++ uncompyle6/parsers/reducecheck/ifelsestmt.py | 8 +- 3 files changed, 267 insertions(+), 5 deletions(-) create mode 100644 test/bytecode_3.7_run/10_extendedargifelse.pyc create mode 100644 test/simple_source/bug37/10_extendedargifelse.py diff --git a/test/bytecode_3.7_run/10_extendedargifelse.pyc b/test/bytecode_3.7_run/10_extendedargifelse.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ec444e959208a8f6de11d5127d3472754750a51 GIT binary patch literal 2777 zcmeIyhnF2?8NlItXEy~%l#YcK#6SonAZkQ9D5zlQ#RUm>=KH2)TXwT)(wiU%u~IDb z-a(~FQF>9-2?NyRkcauqS)5H~X+J`>{V?p@#!FkgswO zvpARzDH(xCPC-dU&1`zdm%x3`$S;W^kghM%u!#RQ@If|n>hGRL7 zuX8*n@C{DnB)-YXoWf$h#kctm-{pIJpHn%F(>a45@I!vYk2#aGIGb}gm-9HE3%HPr zxR^`0l*_oBE4Y%YxSDIYmY?ube#UiN&kfwjP5hjjxrJM~jbHFfZs!i}!9`5Bn z?&kr1#jkmg-|$<0#}a%koJje6Az>B=Z%e=y?yvFOi!JE9r+o83%J^BQ2ZNGC(LfhxA#qHR&xO-@F zNP1fR-J#2Gy7y{L8MAEkDYEyn(PzlA#AW7&-9GmuolcWTTt=FtGtW7n1uSGylcb%VBu$+fsYa@iYNQ&eMyio&q#CJ4s*!4>8mUG)r%6(c zbQqm<1f5hT)k$^IMLkJom&`7iPNtLTWICBnrjzMpI+;$^+a#Gz*6-BGbTYeSI+;$U zlj&qSnNFsY>0~;=K0znw1f8H0bb?OM2|7V1=mh%&onW7!6Lf-3&a6Lq3au9NHJ zS(D^CxlXQ=>*PAQPOg*d0B& z*ry0iokFM3DRc^*LZ{FvbPD?vI)!}-ox(naPBGjhg-)SU*r(7bbc%&dQs|UArF}}B z(mth5sZ;8dWs{UTrB10+>XbUAPN`GslsctOX`fQ3)G2jJ_pQ_^bxNH|r_!n1w@Rnd zsWd9PR2r2=rBP{A?pbAiWqxITHRQY5mD!cql^rUxEBC50yEeNvyS77Zc5QZThuZww z{M!85{M!85{Mrt+9cqnQqt>YHP}`x_sdZ|dTBp{jb!z{cvpe{k%+8vwd7Yt)TSJpP z9p1UTHg&k_8|;mKh0n ey>Xk-N6hd9&zSD^|KIQDJ21BW?t6TDZ1O)K1g{4G literal 0 HcmV?d00001 diff --git a/test/simple_source/bug37/10_extendedargifelse.py b/test/simple_source/bug37/10_extendedargifelse.py new file mode 100644 index 00000000..15d5adc1 --- /dev/null +++ b/test/simple_source/bug37/10_extendedargifelse.py @@ -0,0 +1,264 @@ +aa = 0 +ab = 0 +ac = 0 +ad = 0 +ae = 0 +af = 0 +ag = 0 +ah = 0 +ai = 0 +aj = 0 +ak = 0 +al = 0 +am = 0 +an = 0 +ao = 0 +ap = 0 +aq = 0 +ar = 0 +at = 0 +au = 0 +av = 0 +aw = 0 +ax = 0 +ay = 0 +az = 0 +ba = 0 +bb = 0 +bc = 0 +bd = 0 +be = 0 +bf = 0 +bg = 0 +bh = 0 +bi = 0 +bj = 0 +bk = 0 +bl = 0 +bm = 0 +bn = 0 +bo = 0 +bp = 0 +bq = 0 +br = 0 +bs = 0 +bt = 0 +bu = 0 +bv = 0 +bw = 0 +bx = 0 +by = 0 +bz = 0 +ca = 0 +cb = 0 +cc = 0 +cd = 0 +ce = 0 +cf = 0 +cg = 0 +ch = 0 +ci = 0 +cj = 0 +ck = 0 +cl = 0 +cm = 0 +cn = 0 +co = 0 +cp = 0 +cq = 0 +cr = 0 +cs = 0 +ct = 0 +cu = 0 +cv = 0 +cw = 0 +cx = 0 +cy = 0 +cz = 0 +da = 0 +db = 0 +dc = 0 +dd = 0 +de = 0 +df = 0 +dg = 0 +dh = 0 +di = 0 +dj = 0 +dk = 0 +dl = 0 +dm = 0 +dn = 0 +do = 0 +dp = 0 +dq = 0 +dr = 0 +ds = 0 +dt = 0 +du = 0 +dv = 0 +dw = 0 +dx = 0 +dy = 0 +dz = 0 +ea = 0 +eb = 0 +ec = 0 +ed = 0 +ee = 0 +ef = 0 +eg = 0 +eh = 0 +ei = 0 +ej = 0 +ek = 0 +el = 0 +em = 0 +en = 0 +eo = 0 +ep = 0 +eq = 0 +er = 0 +es = 0 +et = 0 +eu = 0 +ev = 0 +ew = 0 +ex = 0 +ey = 0 +ez = 0 +fa = 0 +fb = 0 +fc = 0 +fd = 0 +fe = 0 +ff = 0 +fg = 0 +fh = 0 +fi = 0 +fj = 0 +fk = 0 +fl = 0 +fm = 0 +fn = 0 +fo = 0 +fp = 0 +fq = 0 +fr = 0 +fs = 0 +ft = 0 +fu = 0 +fv = 0 +fw = 0 +fx = 0 +fy = 0 +fz = 0 +ga = 0 +gb = 0 +gc = 0 +gd = 0 +ge = 0 +gf = 0 +gg = 0 +gh = 0 +gi = 0 +gj = 0 +gk = 0 +gl = 0 +gm = 0 +gn = 0 +go = 0 +gp = 0 +gq = 0 +gr = 0 +gs = 0 +gt = 0 +gu = 0 +gv = 0 +gw = 0 +gx = 0 +gy = 0 +gz = 0 +ha = 0 +hb = 0 +hc = 0 +hd = 0 +he = 0 +hf = 0 +hg = 0 +hh = 0 +hi = 0 +hj = 0 +hk = 0 +hl = 0 +hm = 0 +hn = 0 +ho = 0 +hp = 0 +hq = 0 +hr = 0 +hs = 0 +ht = 0 +hu = 0 +hv = 0 +hw = 0 +hx = 0 +hy = 0 +hz = 0 +ia = 0 +ib = 0 +ic = 0 +id = 0 +ie = 0 +ig = 0 +ih = 0 +ii = 0 +ij = 0 +ik = 0 +il = 0 +im = 0 +io = 0 +ip = 0 +iq = 0 +ir = 0 +it = 0 +iu = 0 +iv = 0 +iw = 0 +ix = 0 +iy = 0 +iz = 0 +ja = 0 +jb = 0 +jc = 0 +jd = 0 +je = 0 +jf = 0 +jg = 0 +jh = 0 +ji = 0 +jj = 0 +jk = 0 +jl = 0 +jm = 0 +jn = 0 +jo = 0 +jp = 0 +jq = 0 +jr = 0 +js = 0 +jt = 0 +ju = 0 +jv = 0 +jw = 0 +jx = 0 +jy = 0 +jz = 0 +ka = 0 +kb = 0 +kc = 0 +var = True +if var: + aa = 1 +else: + aa = 2 \ No newline at end of file diff --git a/uncompyle6/parsers/reducecheck/ifelsestmt.py b/uncompyle6/parsers/reducecheck/ifelsestmt.py index aa73e4eb..e0921b09 100644 --- a/uncompyle6/parsers/reducecheck/ifelsestmt.py +++ b/uncompyle6/parsers/reducecheck/ifelsestmt.py @@ -158,15 +158,13 @@ def ifelsestmt(self, lhs, n, rule, tree, tokens, first, last): # just the last one. if len(tree) == 5: end_come_froms = tree[-1] - offset = tokens[first].offset - offset = int(tokens[first].offset.split('_')[0]) if isinstance(offset, str) else offset if end_come_froms.kind != "else_suite" and self.version >= (3, 0): if end_come_froms == "opt_come_from_except" and len(end_come_froms) > 0: end_come_froms = end_come_froms[0] if not isinstance(end_come_froms, Token): if len(end_come_froms): - return offset > end_come_froms[-1].attr - elif offset > end_come_froms.attr: + return tokens[first].off2int() > end_come_froms[-1].attr + elif tokens[first].off2int() > end_come_froms.attr: return True # FIXME: There is weirdness in the grammar we need to work around. @@ -175,7 +173,7 @@ def ifelsestmt(self, lhs, n, rule, tree, tokens, first, last): last_token = tree[-1] else: last_token = tokens[last] - if last_token == "COME_FROM" and offset > last_token.attr: + if last_token == "COME_FROM" and tokens[first].off2int() > last_token.attr: if self.version < (3, 0) and self.insts[self.offset2inst_index[last_token.attr]].opname != "SETUP_LOOP": return True