summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-06-28 06:21:30 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-06-28 06:21:30 -0700
commit4462afdd0a80cbf8c73faa58fb0540b70bd0d890 (patch)
tree0299bf89ff818534bd5aa5c0bb4827ca0ea5b5e4
parentf68ce026f8cbf8bd85ffcc98beeaad75dab56c7c (diff)
downloadtxr-4462afdd0a80cbf8c73faa58fb0540b70bd0d890.tar.gz
txr-4462afdd0a80cbf8c73faa58fb0540b70bd0d890.tar.bz2
txr-4462afdd0a80cbf8c73faa58fb0540b70bd0d890.zip
expander: use constantp_noex for expanded forms.
* eval.c (expand_progn, do_expand): Use the constantp_noex helper function of constantp on arguments that we have already fully expanded.
-rw-r--r--eval.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/eval.c b/eval.c
index 30c34836..b383a325 100644
--- a/eval.c
+++ b/eval.c
@@ -3385,7 +3385,7 @@ static val expand_forms_ss(val forms, val menv, val ss_hash)
}
}
-static val constantp(val form, val env_in);
+static val constantp_noex(val form);
static val expand_progn(val form, val menv)
{
@@ -3403,7 +3403,7 @@ static val expand_progn(val form, val menv)
return rlcp(cdr(ex_f), form);
}
- if ((symbolp(ex_f) || constantp(ex_f, menv)) && ex_r)
+ if ((symbolp(ex_f) || constantp_noex(ex_f)) && ex_r)
return rlcp(ex_r, form);
if (ex_f == f && ex_r == r)
@@ -5080,8 +5080,8 @@ again:
if (insym_ex == rcons_s &&
proper_list_p(args_ex) && length(args_ex) == two &&
- constantp(car(args_ex), menv) &&
- constantp(cadr(args_ex), menv))
+ constantp_noex(car(args_ex)) &&
+ constantp_noex(cadr(args_ex)))
{
return rlcp(rcons(eval(car(args_ex), menv, form),
eval(cadr(args_ex), menv, form)), form);