More stringent "ifstmt" checks on 3.x

This commit is contained in:
rocky
2020-01-16 14:02:04 -05:00
parent a532aa5b0e
commit 39459168b0

View File

@@ -1510,13 +1510,19 @@ class Python3Parser(PythonParser):
condition_jump2 = tokens[min(last - 1, len(tokens) - 1)] condition_jump2 = tokens[min(last - 1, len(tokens) - 1)]
if condition_jump2.kind.startswith("POP_JUMP_IF"): if condition_jump2.kind.startswith("POP_JUMP_IF"):
return condition_jump.attr == condition_jump2.attr return condition_jump.attr == condition_jump2.attr
last = min(last, n-1)
if tokens[last] == "COME_FROM" and tokens[last].off2int() != condition_jump.attr:
return False
# if condition_jump.attr < condition_jump2.off2int(): # if condition_jump.attr < condition_jump2.off2int():
# print("XXX", first, last) # print("XXX", first, last)
# for t in range(first, last): print(tokens[t]) # for t in range(first, last): print(tokens[t])
# from trepan.api import debug; debug() # from trepan.api import debug; debug()
return condition_jump.attr < condition_jump2.off2int() return condition_jump.attr < condition_jump2.off2int()
return False return False
elif rule == ("ifstmt", ("testexpr", "\\e___ifstmts_jump")): elif rule == ("ifstmt", ("testexpr", "\\e__ifstmts_jump")):
# I am not sure what to check. # I am not sure what to check.
# Probably needs fixing elsewhere # Probably needs fixing elsewhere
return True return True