From 9cac065f8374ed008bf8274909b3f431dd9e8da6 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 21 Jan 2017 00:49:21 -0800 Subject: bugfix: expand dest arg of @(output). * parser.y (expand_form_ver): New inline function. (output_clause): If exprs are present, expand first one. --- parser.y | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/parser.y b/parser.y index dfc501df..40e36f47 100644 --- a/parser.y +++ b/parser.y @@ -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' -- cgit v1.2.3