py/emitnative: Fix try-finally in outer scope, so finally is cancelled.
This commit is contained in:
parent
67ee4e2401
commit
f2de9d60f7
|
@ -914,7 +914,7 @@ STATIC void emit_native_label_assign(emit_t *emit, mp_uint_t l) {
|
||||||
|
|
||||||
if (is_finally) {
|
if (is_finally) {
|
||||||
// Label is at start of finally handler: pop exception stack
|
// Label is at start of finally handler: pop exception stack
|
||||||
emit_native_leave_exc_stack(emit, true);
|
emit_native_leave_exc_stack(emit, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -82,3 +82,15 @@ finally:
|
||||||
print("except2")
|
print("except2")
|
||||||
print("finally1")
|
print("finally1")
|
||||||
print()
|
print()
|
||||||
|
|
||||||
|
# case where exception is raised after a finally has finished (tests that the finally doesn't run again)
|
||||||
|
def func():
|
||||||
|
try:
|
||||||
|
print("try")
|
||||||
|
finally:
|
||||||
|
print("finally")
|
||||||
|
foo
|
||||||
|
try:
|
||||||
|
func()
|
||||||
|
except:
|
||||||
|
print("except")
|
||||||
|
|
Loading…
Reference in New Issue