summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eval.c2
-rw-r--r--eval.h1
-rw-r--r--parser.y7
3 files changed, 5 insertions, 5 deletions
diff --git a/eval.c b/eval.c
index 74521190..4ccc6f62 100644
--- a/eval.c
+++ b/eval.c
@@ -3182,7 +3182,7 @@ static val expand_var_mods(val mods, val menv)
}
}
-static val expand_quasi(val quasi_forms, val menv)
+val expand_quasi(val quasi_forms, val menv)
{
if (nilp(quasi_forms)) {
return nil;
diff --git a/eval.h b/eval.h
index f7b334db..0b147225 100644
--- a/eval.h
+++ b/eval.h
@@ -70,6 +70,7 @@ val eval(val form, val env, val ctx_form);
val eval_intrinsic(val form, val env);
val format_field(val string_or_list, val modifier, val filter, val eval_fun);
val subst_vars(val forms, val env, val filter);
+val expand_quasi(val quasi_forms, val menv);
val load(val target);
val expand(val form, val menv);
val expand_forms(val forms, val menv);
diff --git a/parser.y b/parser.y
index 01a1c91a..5a2ef76f 100644
--- a/parser.y
+++ b/parser.y
@@ -782,10 +782,9 @@ o_var : SYMTOK { val expr = symhlpr($1, nil);
expand_meta($2, nil),
expand_meta($3, nil), nao); }
else
- { $$ = list(var_s,
- expand($2, nil),
- expand_forms($3, nil), nao); }
- rl($$, num(parser->lineno)); }
+ { val quasi_var = list(var_s, $2, $3, nao);
+ val quasi_items = cons(quasi_var, nil);
+ $$ = car(expand_quasi(quasi_items, nil)); } }
| SYMTOK error { $$ = nil;
yybadtok(yychar, lit("variable spec")); }
;