diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-01-21 00:49:21 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-01-21 00:49:21 -0800 |
commit | 9cac065f8374ed008bf8274909b3f431dd9e8da6 (patch) | |
tree | bb27c7872bc2092b642defe79f4b1901f3b3568f /parser.y | |
parent | be971d4b348c735523e9324240825ef87c24a2d9 (diff) | |
download | txr-9cac065f8374ed008bf8274909b3f431dd9e8da6.tar.gz txr-9cac065f8374ed008bf8274909b3f431dd9e8da6.tar.bz2 txr-9cac065f8374ed008bf8274909b3f431dd9e8da6.zip |
bugfix: expand dest arg of @(output).
* parser.y (expand_form_ver): New inline function.
(output_clause): If exprs are present, expand first one.
Diffstat (limited to 'parser.y')
-rw-r--r-- | parser.y | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -89,6 +89,13 @@ INLINE val expand_forms_ver(val forms, int ver) return forms; } +INLINE val expand_form_ver(val form, int ver) +{ + if (!opt_compat || opt_compat >= ver) + return expand(form, nil); + return form; +} + %} %pure-parser @@ -574,7 +581,11 @@ output_clause : OUTPUT ')' o_elems '\n' END newl { $$ = rl(list(output_s, $4, nao), num($1)); } | OUTPUT exprs ')' newl out_clauses - END newl { $$ = list(output_s, $5, $2, nao); + END newl { cons_bind (dest, rest, $2); + val dest_ex = expand_form_ver(dest, 166); + val args = if3(dest_ex == dest, + $2, cons(dest_ex, rest)); + $$ = list(output_s, $5, args, nao); rl($$, num($1)); } | OUTPUT exprs ')' o_elems '\n' |