summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/eval.c b/eval.c
index e7ad031d..54e7024e 100644
--- a/eval.c
+++ b/eval.c
@@ -1107,15 +1107,12 @@ static val op_tree_case(val form, val env)
for (; consp(cases); cases = cdr(cases)) {
val onecase = car(cases);
cons_bind (params, forms, onecase);
-
- if (!params) {
- if (!expr_val)
- return eval_progn(forms, env, forms);
- } else {
- val new_env = bind_macro_params(env, nil, params, expr_val,
+ val new_env = bind_macro_params(env, nil, params, expr_val,
colon_k, onecase);
- if (new_env)
- return eval_progn(forms, new_env, forms);
+ if (new_env) {
+ val ret = eval_progn(forms, new_env, forms);
+ if (ret != colon_k)
+ return ret;
}
}