From ce943667b2aabb2821a0d1f61025ace9f1c146dc Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 19 Jun 2014 07:57:23 -0700 Subject: Bugfix: dwim operator contradicts the documentation and intended design. * eval.c (do_eval): When calling do_eval_args to evaluate the arguments of a compound form that is a function call, do not pass down the lookup function, but substitute &lookup_var. Passing down the lookup function means tha all evaluation enclosed in (dwim ...) or [...] follows the Lisp-1 style. --- ChangeLog | 11 +++++++++++ eval.c | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b52a0678..f92dd991 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2014-06-19 Kaz Kylheku + + Bugfix: dwim operator contradicts the documentation + and intended design. + + * eval.c (do_eval): When calling do_eval_args to evaluate + the arguments of a compound form that is a function call, + do not pass down the lookup function, but substitute &lookup_var. + Passing down the lookup function means tha all evaluation + enclosed in (dwim ...) or [...] follows the Lisp-1 style. + 2014-06-19 Kaz Kylheku * eval.c (me_ap): New static function. diff --git a/eval.c b/eval.c index fe6337b6..ed3f70b7 100644 --- a/eval.c +++ b/eval.c @@ -910,7 +910,7 @@ static val do_eval(val form, val env, val ctx_form, eval_error(form, lit("no such function or operator: ~s"), oper, nao); abort(); } else { - val args = do_eval_args(rest(form), env, form, lookup); + val args = do_eval_args(rest(form), env, form, &lookup_var); debug_frame(oper, args, nil, env, nil, nil, nil); last_form_evaled = form; debug_return (apply(cdr(fbinding), args, form)); -- cgit v1.2.3