diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-04-07 06:36:04 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-04-07 06:36:04 -0700 |
commit | 3dba6ca7c542fefb2124340f948a0b10eea94b91 (patch) | |
tree | f7678e2b25d2e0f41de83631e03ae30fca884ef9 /match.c | |
parent | d104ccf947c66035850048e044e76a4dfb4dec7f (diff) | |
download | txr-3dba6ca7c542fefb2124340f948a0b10eea94b91.tar.gz txr-3dba6ca7c542fefb2124340f948a0b10eea94b91.tar.bz2 txr-3dba6ca7c542fefb2124340f948a0b10eea94b91.zip |
exceptions: use uw_rthrow for non-error exceptions.
* eval.c (eval_exception): This function is shared by warnings
and errors. Use uw_throw. The eval_error caller already has
an abort() after its eval_exception call, which makes that
code path continue to be equivalent to uw_throw. The behavior
changes for the other caller, eval_warn, which will now return
if the warning is not handled.
(eval_defr_warn, gather_free_refs, gather_free_refs_nw): Throw
non-error exception with uw_rthrow.
* match.c (v_throw, v_assert, h_assert): Use uw_rthrow for these
directives, just like the throw function.
* parser.c (repl_intr, repl_warning): Use uw_rthrow.
* unwind.c (uw_muffle_warning, uw_release_deferred_warnings):
Likewise.
Diffstat (limited to 'match.c')
-rw-r--r-- | match.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -4092,7 +4092,7 @@ static val v_throw(match_files_ctx *c) { val values = mapcar(pa_123_2(func_n3(txeval_allow_ub), specline, c->bindings), args); - uw_throw(type, values); + return uw_rthrow(type, values); } } @@ -4311,7 +4311,7 @@ static val v_assert(match_files_ctx *c) } else if (type) { val values = mapcar(pa_123_2(func_n3(txeval_allow_ub), specline, c->bindings), args); - uw_throw(type, values); + uw_rthrow(type, values); } else { if (c->curfile) typed_error(assert_s, first_spec, lit("assertion (at ~a:~d)"), c->curfile, c->data_lineno, nao); @@ -4548,7 +4548,7 @@ static val h_assert(match_line_ctx *c) } else if (type) { val values = mapcar(pa_123_2(func_n3(txeval_allow_ub), c->specline, c->bindings), elem); - uw_throw(type, values); + uw_rthrow(type, values); } else { if (c->file) typed_error(assert_s, elem, lit("assertion (at ~a:~d)"), c->file, c->data_lineno, nao); |