Add test case

This commit is contained in:
Bo Xuan
2022-08-24 16:19:39 +08:00
parent 81633b3c1c
commit 2f3b5e53d4
3 changed files with 267 additions and 5 deletions

View File

@@ -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