diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-03-21 21:32:55 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-03-21 21:32:55 -0700 |
commit | f99e3f2f91e56ae79e18f4849be82c6d15508e5d (patch) | |
tree | 4ab65e1e462df1df5086cbf4772c41d2eb6cadbe | |
parent | 3800dbb4dcb363419814735b7f1e00ff3544449b (diff) | |
download | txr-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.c | 11 | ||||
-rw-r--r-- | eval.h | 1 | ||||
-rw-r--r-- | lib.c | 1 |
3 files changed, 11 insertions, 2 deletions
@@ -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) @@ -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); @@ -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 |