summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--eval.c2
-rw-r--r--match.c2
3 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index c8198f43..76bd5ef1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2012-02-16 Kaz Kylheku <kaz@kylheku.com>
+ * eval.c (op_catch): Treat the nil exception object as an empty
+ list, and not the atom nil.
+
+ * match.c (v_try): Do not transform an atomic exception x into
+ the list ((t . x)). Just to (x). This (t . x) representation is
+ a vestige of from the time when the exception consisted of the
+ old-style return values from txeval.
+
+2012-02-16 Kaz Kylheku <kaz@kylheku.com>
+
TXR Lisp gets exception handling.
* eval.c (op_catch, expand_catch_clause,
diff --git a/eval.c b/eval.c
index a62353ed..4aa1019b 100644
--- a/eval.c
+++ b/eval.c
@@ -1094,7 +1094,7 @@ static val op_catch(val form, val env)
if (uw_exception_subtype_p(exsym, type)) {
val params = second(clause);
- val clause_env = bind_args(env, params, if3(consp(exvals),
+ val clause_env = bind_args(env, params, if3(listp(exvals),
exvals, cons(exvals, nil)),
clause);
result = eval_progn(rest(rest(clause)), clause_env, clause);
diff --git a/match.c b/match.c
index 66eac4b1..93b55dbf 100644
--- a/match.c
+++ b/match.c
@@ -3033,7 +3033,7 @@ static val v_try(match_files_ctx *c)
val body = third(clause);
val vals = if3(listp(exvals),
exvals,
- cons(cons(t, exvals), nil));
+ cons(exvals, nil));
if (first(clause) == catch_s) {
if (uw_exception_subtype_p(exsym, type)) {