Skip to content

Commit 94dc498

Browse files
committed
error is nonlocal
1 parent 94562d2 commit 94dc498

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

Tools/cases_generator/analyzer.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,7 @@ def check_escaping_calls(instr: parser.CodeDef, escapes: dict[SimpleStmt, Escapi
683683
calls = {e.call for e in escapes.values()}
684684

685685
def visit(stmt: Stmt) -> None:
686+
nonlocal error
686687
if isinstance(stmt, IfStmt) or isinstance(stmt, WhileStmt):
687688
for tkn in stmt.condition:
688689
if tkn in calls:
@@ -694,13 +695,17 @@ def visit(stmt: Stmt) -> None:
694695
if tkn.kind == "IDENTIFIER" and tkn.text in ("DEOPT_IF", "ERROR_IF", "EXIT_IF"):
695696
in_if = 1
696697
next(tkn_iter)
697-
elif tkn.kind == "LPAREN" and in_if:
698-
in_if += 1
698+
elif tkn.kind == "LPAREN":
699+
if in_if:
700+
in_if += 1
699701
elif tkn.kind == "RPAREN":
700702
if in_if:
701703
in_if -= 1
702-
if tkn in calls and in_if:
704+
elif tkn in calls and in_if:
703705
error = tkn
706+
707+
708+
instr.block.accept(visit)
704709
if error is not None:
705710
raise analysis_error(f"Escaping call '{error.text} in condition", error)
706711

Tools/cases_generator/generators_common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def deopt_if(
161161
self.emit(") {\n")
162162
next(tkn_iter) # Semi colon
163163
assert inst is not None
164-
assert inst.family is not None
164+
assert inst.family is not None, inst
165165
family_name = inst.family.name
166166
self.emit(f"UPDATE_MISS_STATS({family_name});\n")
167167
self.emit(f"assert(_PyOpcode_Deopt[opcode] == ({family_name}));\n")

0 commit comments

Comments
 (0)