mirror of
https://github.com/python/cpython.git
synced 2026-03-30 16:41:06 +00:00
bpo-44616: Mark all clean up instructions at end of named exception block as artificial (GH-27109) (GH-27135)
(cherry picked from commit e5862f79c1)
This commit is contained in:
parent
7e1d6308a3
commit
794ff7d505
2 changed files with 25 additions and 3 deletions
|
|
@ -1077,6 +1077,29 @@ def func():
|
|||
(1, 'line'),
|
||||
(1, 'return')])
|
||||
|
||||
def test_no_tracing_of_named_except_cleanup(self):
|
||||
|
||||
def func():
|
||||
x = 0
|
||||
try:
|
||||
1/x
|
||||
except ZeroDivisionError as error:
|
||||
if x:
|
||||
raise
|
||||
return "done"
|
||||
|
||||
self.run_and_compare(func,
|
||||
[(0, 'call'),
|
||||
(1, 'line'),
|
||||
(2, 'line'),
|
||||
(3, 'line'),
|
||||
(3, 'exception'),
|
||||
(4, 'line'),
|
||||
(5, 'line'),
|
||||
(7, 'line'),
|
||||
(7, 'return')])
|
||||
|
||||
|
||||
class SkipLineEventsTraceTestCase(TraceTestCase):
|
||||
"""Repeat the trace tests, but with per-line events skipped"""
|
||||
|
||||
|
|
|
|||
|
|
@ -3220,10 +3220,10 @@ compiler_try_except(struct compiler *c, stmt_ty s)
|
|||
/* second # body */
|
||||
VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
|
||||
compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body);
|
||||
ADDOP(c, POP_BLOCK);
|
||||
ADDOP(c, POP_EXCEPT);
|
||||
/* name = None; del name; # Mark as artificial */
|
||||
c->u->u_lineno = -1;
|
||||
ADDOP(c, POP_BLOCK);
|
||||
ADDOP(c, POP_EXCEPT);
|
||||
ADDOP_LOAD_CONST(c, Py_None);
|
||||
compiler_nameop(c, handler->v.ExceptHandler.name, Store);
|
||||
compiler_nameop(c, handler->v.ExceptHandler.name, Del);
|
||||
|
|
@ -3254,7 +3254,6 @@ compiler_try_except(struct compiler *c, stmt_ty s)
|
|||
return 0;
|
||||
VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
|
||||
compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body);
|
||||
/* name = None; del name; # Mark as artificial */
|
||||
c->u->u_lineno = -1;
|
||||
ADDOP(c, POP_EXCEPT);
|
||||
ADDOP_JUMP(c, JUMP_FORWARD, end);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue