summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2023-03-21 21:32:55 -0700
committerKaz Kylheku <kaz@kylheku.com>2023-03-21 21:32:55 -0700
commitf99e3f2f91e56ae79e18f4849be82c6d15508e5d (patch)
tree4ab65e1e462df1df5086cbf4772c41d2eb6cadbe
parent3800dbb4dcb363419814735b7f1e00ff3544449b (diff)
downloadtxr-f99e3f2f91e56ae79e18f4849be82c6d15508e5d.tar.gz
txr-f99e3f2f91e56ae79e18f4849be82c6d15508e5d.tar.bz2
txr-f99e3f2f91e56ae79e18f4849be82c6d15508e5d.zip
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.
-rw-r--r--eval.c11
-rw-r--r--eval.h1
-rw-r--r--lib.c1
3 files changed, 11 insertions, 2 deletions
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)
diff --git a/eval.h b/eval.h
index dac4b1c1..a927666f 100644
--- a/eval.h
+++ b/eval.h
@@ -101,4 +101,5 @@ val pprinl(val obj, val stream);
val tprint(val obj, val out);
void eval_init(void);
+void eval_late_init(void);
void eval_compat_fixup(int compat_ver);
diff --git a/lib.c b/lib.c
index b3abef2e..f9b6ee30 100644
--- a/lib.c
+++ b/lib.c
@@ -14935,6 +14935,7 @@ void init(val *stack_bottom)
parse_init();
uw_late_init();
less_tab_init();
+ eval_late_init();
#if HAVE_SYSLOG
syslog_init();
#endif