summaryrefslogtreecommitdiffstats
path: root/unwind.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2015-02-06 22:24:33 -0800
committerKaz Kylheku <kaz@kylheku.com>2015-02-06 22:24:33 -0800
commit55cc849371a0dc0782f3f749cb58c46e0a558e40 (patch)
treef82e0ff125c582ef2753fef122e4761a9a4533e2 /unwind.h
parent3b7f7ef0422537391879d356e61baa50f74483a1 (diff)
downloadtxr-55cc849371a0dc0782f3f749cb58c46e0a558e40.tar.gz
txr-55cc849371a0dc0782f3f749cb58c46e0a558e40.tar.bz2
txr-55cc849371a0dc0782f3f749cb58c46e0a558e40.zip
Slight internal representation change of string-only exceptions.
One upshot of all this is that (throw 'foo "msg") now does exactly the same thing as (throwf 'foo "msg"). A message-only exception really is a one-string exception argument list ("message ..."), like the documentation says. * unwind.h (struct uw_catch): exception member renamed to args. (uw_catch): Macro follows structure member rename. * eval.c (op_catch): Removed now unnecessary kludge of turning non-list exception argument list into a one-element argument list. * match.c (v_try): Similar hack to the one in op_catch removed here. * unwind.c (uw_unwind_to_exit_point, uw_push_catch): Follows rename of exception member. (uw_throw): The exception parameter is renamed to args. The kludge removed from op_catch re-appears here, because numerous calls to uw_throw just pass a string as args. It's less of a kludge here because this is the master entry point to exception processing, and it straightens out the representation right away. The exception arguments or message are printed in a clearer way.
Diffstat (limited to 'unwind.h')
-rw-r--r--unwind.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/unwind.h b/unwind.h
index 634fdfea..b2a02e74 100644
--- a/unwind.h
+++ b/unwind.h
@@ -60,7 +60,7 @@ struct uw_catch {
uw_frtype_t type;
val matches;
val sym;
- val exception;
+ val args;
uw_frame_t *cont;
int visible;
extended_jmp_buf jb;
@@ -172,7 +172,7 @@ noreturn val type_mismatch(val, ...);
goto uw_unwind_label; \
break; \
case 2: \
- EXCVAR = uw_catch.ca.exception; \
+ EXCVAR = uw_catch.ca.args; \
SYMVAR = uw_catch.ca.sym; \
(void) SYMVAR; \
/* prevent looping */ \