1
- # Copyright (c) 2020, 2022 Rocky Bernstein
1
+ # Copyright (c) 2020, 2022, 2024 Rocky Bernstein
2
2
3
- def tryexcept (self , lhs , n , rule , ast , tokens , first , last ):
3
+
4
+ def tryexcept (self , lhs , n : int , rule , ast , tokens , first : int , last : int ):
4
5
come_from_except = ast [- 1 ]
5
6
if rule == (
6
- "try_except" ,
7
- (
8
- "SETUP_EXCEPT" ,
9
- "suite_stmts_opt" ,
10
- "POP_BLOCK" ,
11
- "except_handler" ,
12
- "opt_come_from_except" ,
13
- ),
7
+ "try_except" ,
8
+ (
9
+ "SETUP_EXCEPT" ,
10
+ "suite_stmts_opt" ,
11
+ "POP_BLOCK" ,
12
+ "except_handler" ,
13
+ "opt_come_from_except" ,
14
+ ),
14
15
):
15
16
if come_from_except [0 ] == "COME_FROM" :
16
17
# There should be at least two COME_FROMs, one from an
@@ -20,39 +21,41 @@ def tryexcept(self, lhs, n, rule, ast, tokens, first, last):
20
21
pass
21
22
22
23
elif rule == (
23
- "try_except" ,
24
- (
25
- "SETUP_EXCEPT" ,
26
- "suite_stmts_opt" ,
27
- "POP_BLOCK" ,
28
- "except_handler" ,
29
- "COME_FROM" ,
30
- ),
24
+ "try_except" ,
25
+ (
26
+ "SETUP_EXCEPT" ,
27
+ "suite_stmts_opt" ,
28
+ "POP_BLOCK" ,
29
+ "except_handler" ,
30
+ "COME_FROM" ,
31
+ ),
31
32
):
32
33
return come_from_except .attr < tokens [first ].offset
33
34
34
35
elif rule == (
35
- ' try_except' ,
36
- (
37
- ' SETUP_EXCEPT' ,
38
- ' suite_stmts_opt' ,
39
- ' POP_BLOCK' ,
40
- ' except_handler' ,
41
- ' \\ e_opt_come_from_except'
42
- ),
36
+ " try_except" ,
37
+ (
38
+ " SETUP_EXCEPT" ,
39
+ " suite_stmts_opt" ,
40
+ " POP_BLOCK" ,
41
+ " except_handler" ,
42
+ " \\ e_opt_come_from_except" ,
43
+ ),
43
44
):
44
45
# Find END_FINALLY.
45
46
for i in range (last , first , - 1 ):
46
47
if tokens [i ] == "END_FINALLY" :
47
- jump_before_finally = tokens [i - 1 ]
48
+ jump_before_finally = tokens [i - 1 ]
48
49
if jump_before_finally .kind .startswith ("JUMP" ):
49
50
if jump_before_finally == "JUMP_FORWARD" :
50
51
# If there is a JUMP_FORWARD before
51
52
# the END_FINALLY to some jumps place
52
53
# beyond tokens[last].off2int() then
53
54
# this is a try/else rather than an
54
55
# try (no else).
55
- return tokens [i - 1 ].attr > tokens [last ].off2int (prefer_last = True )
56
+ return tokens [i - 1 ].attr > tokens [last ].off2int (
57
+ prefer_last = True
58
+ )
56
59
elif jump_before_finally == "JUMP_BACK" :
57
60
# If there is a JUMP_BACK before the
58
61
# END_FINALLY then this is a looping
@@ -61,8 +64,10 @@ def tryexcept(self, lhs, n, rule, ast, tokens, first, last):
61
64
# jump or this is a try/else rather
62
65
# than an try (no else).
63
66
except_handler = ast [3 ]
64
- if (except_handler == "except_handler" and
65
- except_handler [0 ] == "JUMP_FORWARD" ):
67
+ if (
68
+ except_handler == "except_handler"
69
+ and except_handler [0 ] == "JUMP_FORWARD"
70
+ ):
66
71
return True
67
72
return False
68
73
pass
0 commit comments