From 7bcd35fa7204a8bf1a043a2587f2e0f252764364 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sun, 15 Jan 2017 19:59:28 -0800 Subject: Dump deferred warnings in eval_intrinsic. * eval.c (eval_intrinsic): Dump deferred warnings after expansion, unless in the middle of a load. * parser.c (read_eval_ret_last): Bind *load-recursive* around all evaluations to t, then dump warnings if prior value of *load-recursive* is nil. Thus the repl's :read feature behaves like load. (repl_warning): We can now unconditionally defer deferrable warnings here now, whether or not in a load. --- eval.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 0a9ad60e..0aea1d2f 100644 --- a/eval.c +++ b/eval.c @@ -1263,7 +1263,9 @@ val eval_intrinsic(val form, val env) val lfx_save = last_form_expanded; val form_ex = (last_form_expanded = last_form_evaled = nil, expand(form, nil)); - val ret = eval(form_ex, default_bool_arg(env), form); + val loading = cdr(lookup_var(dyn_env, load_recursive_s)); + val ret = ((void) (loading || uw_dump_deferred_warnings(std_error)), + eval(form_ex, default_bool_arg(env), form)); last_form_expanded = lfx_save; last_form_evaled = lfe_save; return ret; -- cgit v1.2.3