From 69b5a0b4aac82baffabce1d884c77b5268d2777f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 15 Jan 2017 22:36:19 -0800 Subject: Use tentative def mechanism for functions and vars. * eval.c (do_expand): When walking a defun or defvarl, register them as tentative defs. Thus warnings are nicely supressed in code like (progn (defun foo ()) (foo)). --- eval.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/eval.c b/eval.c index 0aea1d2f..cf66cc25 100644 --- a/eval.c +++ b/eval.c @@ -3866,6 +3866,9 @@ static val do_expand(val form, val menv) if (!bindable(name)) not_bindable_error(form, name); + if (sym == defvarl_s) + uw_register_tentative_def(cons(var_s, name)); + if (init != init_ex) form_ex = rlcp(cons(sym, cons(name, cons(init_ex, nil))), form); @@ -3902,6 +3905,9 @@ static val do_expand(val form, val menv) builtin_reject_test(sym, name, form); + if (sym == defun_s) + uw_register_tentative_def(cons(fun_s, name)); + { val inter_env = make_var_shadowing_env(menv, get_param_syms(params)); val new_menv = if3(sym == defun_s, -- cgit v1.2.3