Commit 688e220d authored by Damien George's avatar Damien George
Browse files

Merge pull request #379 from pfalcon/reraise

vm: Implement raise statement w/o args (reraising last exception).
parents 9c817b94 c403076e
...@@ -605,8 +605,14 @@ unwind_return: ...@@ -605,8 +605,14 @@ unwind_return:
case MP_BC_RAISE_VARARGS: case MP_BC_RAISE_VARARGS:
unum = *ip++; unum = *ip++;
assert(unum == 1); assert(unum <= 1);
obj1 = POP(); if (unum == 0) {
// This assumes that nlr.ret_val holds last raised
// exception and is not overwritten since then.
obj1 = nlr.ret_val;
} else {
obj1 = POP();
}
nlr_jump(rt_make_raise_obj(obj1)); nlr_jump(rt_make_raise_obj(obj1));
case MP_BC_YIELD_VALUE: case MP_BC_YIELD_VALUE:
......
# Re-reraising last exception with raise w/o args
def f():
try:
raise ValueError("val", 3)
except:
raise
try:
f()
except ValueError as e:
print(repr(e))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment