From 33a1d4080da6d0b877a8cd8d57de7f076b662320 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 5 Dec 2016 22:13:08 -0800 Subject: bugfix: print unquote/splice in dot position. * lib.c (obj_print_impl): Properly print objects like ^(... . ,expr) and (... . ,*expr) rather than ^(... sys:unquote expr) or ^(... sys:splice expr). --- lib.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib.c b/lib.c index e5dde43f..c443d9b6 100644 --- a/lib.c +++ b/lib.c @@ -9651,7 +9651,25 @@ val obj_print_impl(val obj, val out, val pretty, struct strm_ctx *ctx) for (iter = obj; consp(iter); iter = cdr(iter)) { val d; - obj_print_impl(car(iter), out, pretty, ctx); + val a = car(iter); + val unq = nil; + + if (a == sys_unquote_s) + unq = lit(". ,"); + else if (a == sys_splice_s) + unq = lit(". ,*"); + + if (unq) { + d = cdr(iter); + if (consp(d) && !cdr(d)) { + put_string(unq, out); + obj_print_impl(car(d), out, pretty, ctx); + put_char(closepar, out); + break; + } + } + + obj_print_impl(a, out, pretty, ctx); finish: d = cdr(iter); if (nilp(d)) { -- cgit v1.2.3