diff options
-rw-r--r-- | eval.c | 2 | ||||
-rw-r--r-- | eval.h | 1 | ||||
-rw-r--r-- | parser.y | 7 |
3 files changed, 5 insertions, 5 deletions
@@ -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; @@ -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); @@ -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")); } ; |