| 123456789101112131415161718192021222324252627 |
- # Copyright (c) 2020-2021 Rocky Bernstein
- def except_handler_else(self, lhs, n, rule, ast, tokens, first, last):
- # FIXME: expand this to other versions
- if self.version[:2] not in ((2, 7), (3, 5)):
- return False
- if tokens[first] in ("JUMP_FORWARD", "JUMP_ABSOLUTE"):
- first_jump_target = tokens[first].pattr
- last = min(last, len(tokens)-1)
- for i in range(last, first, -1):
- if tokens[i] == "END_FINALLY":
- i -= 1
- second_jump = tokens[i]
- if second_jump in ("JUMP_FORWARD", "JUMP_ABSOLUTE"):
- second_jump_target = second_jump.pattr
- equal_target = second_jump_target == first_jump_target
- if equal_target:
- return lhs != "except_handler"
- else:
- return lhs != "except_handler_else"
- pass
- else:
- return False
- pass
- pass
- return False
|