You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 08:49:51 +08:00
Add 3.7 "testfalsel" for looping conditions
This commit is contained in:
@@ -17,7 +17,11 @@ def or_check(self, lhs, n, rule, ast, tokens, first, last):
|
||||
if load_global == "LOAD_GLOBAL" and load_global.attr == "AssertionError":
|
||||
return True
|
||||
|
||||
first_offset = tokens[first].off2int()
|
||||
jmp_true_target = ast[1][0].attr
|
||||
if jmp_true_target < first_offset:
|
||||
return False
|
||||
|
||||
jmp_false = tokens[last]
|
||||
# If the jmp is backwards
|
||||
if jmp_false == "POP_JUMP_IF_FALSE":
|
||||
|
@@ -12,4 +12,11 @@ def testtrue(self, lhs, n, rule, ast, tokens, first, last):
|
||||
if pjit == "POP_JUMP_IF_TRUE" and tokens[first].off2int() > pjit.attr:
|
||||
assert_next = tokens[min(last + 1, n - 1)]
|
||||
return assert_next != "RAISE_VARARGS_1"
|
||||
elif rule == ("testfalsel", ("expr", "jmp_true")):
|
||||
pjit = tokens[min(last - 1, n - 2)]
|
||||
# If we have a backwards (looping) jump then this is
|
||||
# really a testtrue. But "asserts" work funny
|
||||
if pjit == "POP_JUMP_IF_TRUE" and tokens[first].off2int() > pjit.attr:
|
||||
assert_next = tokens[min(last + 1, n - 1)]
|
||||
return assert_next == "RAISE_VARARGS_1"
|
||||
return False
|
||||
|
Reference in New Issue
Block a user