Some more changes related to the new except syntax and semantics,
by Collin Winter.
diff --git a/Python/compile.c b/Python/compile.c
index 481cc85..e3bdaf5 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1956,16 +1956,13 @@
ADDOP(c, POP_TOP);
if (handler->name) {
basicblock *cleanup_end, *cleanup_body;
- expr_context_ty orig_ctx;
-
- assert(handler->name->kind == Name_kind);
cleanup_end = compiler_new_block(c);
cleanup_body = compiler_new_block(c);
if(!(cleanup_end || cleanup_body))
return 0;
- VISIT(c, expr, handler->name);
+ compiler_nameop(c, handler->name, Store);
ADDOP(c, POP_TOP);
/*
@@ -1998,14 +1995,10 @@
/* name = None */
ADDOP_O(c, LOAD_CONST, Py_None, consts);
- orig_ctx = handler->name->v.Name.ctx;
- handler->name->v.Name.ctx = Store;
- VISIT(c, expr, handler->name);
+ compiler_nameop(c, handler->name, Store);
- /* del name */
- handler->name->v.Name.ctx = Del;
- VISIT(c, expr, handler->name);
- handler->name->v.Name.ctx = orig_ctx;
+ /* del name */
+ compiler_nameop(c, handler->name, Del);
ADDOP(c, END_FINALLY);
compiler_pop_fblock(c, FINALLY_END, cleanup_end);