summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-02-09 11:07:18 -0800
committerKaz Kylheku <kaz@kylheku.com>2017-02-09 11:07:18 -0800
commit0afe5fe6a1a279792194b5ccff317ee131f88f92 (patch)
tree4eb040f2585f7a44720110bb98ca4ce8c607c8ec /eval.c
parente2764d75a52f60ea37f4d7aaa5414cc663e7749f (diff)
downloadtxr-0afe5fe6a1a279792194b5ccff317ee131f88f92.tar.gz
txr-0afe5fe6a1a279792194b5ccff317ee131f88f92.tar.bz2
txr-0afe5fe6a1a279792194b5ccff317ee131f88f92.zip
Muffle only deferrable warnings in sys:expand.
The problem is that if some macrology is performing its own expansion with sys:expand, and if all warnings are muffled in sys:expand, it means that some warnings will never be seen. Expansion is the last chance to produce warnings issued by macros. Once they are expanded, a redundant expansion pass won't issue the warnings any more. * eval.c (no_warn_expand); Use the uw_muffle_deferrable_warning handler isntead of uw_muffle_warnings. * unwind.c (uw_muffle_deferrable_warning): New function. * unwind.h (uw_muffle_deferrable_warning): Declared.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index ca4bed57..24d545e9 100644
--- a/eval.c
+++ b/eval.c
@@ -4260,7 +4260,7 @@ static val no_warn_expand(val form, val menv)
val ret;
uw_frame_t uw_handler;
uw_push_handler(&uw_handler, cons(warning_s, nil),
- func_n1v(uw_muffle_warning));
+ func_n1v(uw_muffle_deferrable_warning));
ret = expand(form, menv);
uw_pop_frame(&uw_handler);
return ret;