summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index c5e024ee..ec10d1e1 100644
--- a/eval.c
+++ b/eval.c
@@ -2219,6 +2219,20 @@ static val expand_quasi(val quasi_forms, val menv)
if (expr_ex != rest(form))
form_ex = rlcp(cons(sym, expr_ex), form);
+ } else if (sym == var_s) {
+ val param = second(form);
+ val next = third(form);
+ val mods = fourth(form);
+ val param_ex = expand(param, menv);
+ val mods_ex = expand_forms(mods, menv);
+
+ /* next should be nil because this structure should have
+ been passed through o_elemes_transform in the parser
+ which unravels the nesting. */
+ assert (next == nil);
+
+ if (param_ex != param || mods_ex != mods)
+ form_ex = rlcp(list(sym, param_ex, nil, mods_ex, nao), form);
}
}