From f99e3f2f91e56ae79e18f4849be82c6d15508e5d Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 21 Mar 2023 21:32:55 -0700 Subject: ignerr: fix unused warning The ignerr intrinsic macro generates code that has an unused variable. We fix it by turning it into a gensym, since unused warnings aren't generated for gensyms. * eval.c (unused_arg_s): New static variable. (me_ignerr): Use the value of unused_arg_s instead of error_s, for the argument of the catch clause. (eval_init): gc-protect unused_arg_s. (eval_late_init): New function in which we initialized unused_arg_s. The gensym function cannot be used during eval_init. * eval.h (eval_late_init): Declared. * lib.c (init): Call eval_late_init after some other late initializations. --- eval.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index f880232d..e09db92a 100644 --- a/eval.c +++ b/eval.c @@ -118,6 +118,7 @@ val iter_item_f, iter_step_f; val origin_hash; +static val unused_arg_s; static val const_foldable_hash; val make_env(val vbindings, val fbindings, val up_env) @@ -4414,7 +4415,7 @@ static val me_ignerr(val form, val menv) { (void) menv; return list(catch_s, cons(progn_s, rest(form)), - list(error_s, error_s, nao), nao); + list(error_s, unused_arg_s, nao), nao); } static val me_whilet(val form, val env) @@ -6635,7 +6636,8 @@ void eval_init(void) &op_table, &pm_table, &last_form_evaled, &call_f, &iter_begin_f, &iter_from_binding_f, &iter_more_f, &iter_item_f, &iter_step_f, - &unbound_s, &origin_hash, &const_foldable_hash, convert(val *, 0)); + &unbound_s, &origin_hash, &const_foldable_hash, + &unused_arg_s, convert(val *, 0)); top_fb = make_hash(hash_weak_and, nil); top_vb = make_hash(hash_weak_and, nil); top_mb = make_hash(hash_weak_and, nil); @@ -7522,6 +7524,11 @@ void eval_init(void) autoload_init(); } +void eval_late_init(void) +{ + unused_arg_s = gensym(lit("unused-arg")); +} + void eval_compat_fixup(int compat_ver) { if (compat_ver <= 257) -- cgit v1.2.3