From 0cd23a6e9b1b30238bd9abc657e375ad6755c749 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 19 May 2025 08:44:13 -0700 Subject: expander: handle format string in quasi. * eval.c (expand_quasi): Quasiliteral sys:var items now have a format string, which we have to propagate to the expansion. * tests/012/quasi.tl: New tests. --- eval.c | 6 +++++- tests/012/quasi.tl | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/eval.c b/eval.c index a94657d9..8c6bf710 100644 --- a/eval.c +++ b/eval.c @@ -4129,9 +4129,13 @@ val expand_quasi(val quasi_forms, val menv) val mods = third(form); val param_ex = expand(param, menv); val mods_ex = expand_var_mods(mods, menv); + val fmt = fourth(form); if (param_ex != param || mods_ex != mods) - form_ex = rlcp(list(sym, param_ex, mods_ex, nao), form); + form_ex = rlcp(if3(fmt, + list(sym, param_ex, mods_ex, fmt, nao), + list(sym, param_ex, mods_ex, nao)), + form); } else { if (comp_184) form_ex = expand(form, menv); diff --git a/tests/012/quasi.tl b/tests/012/quasi.tl index 7dfce10c..f61debdf 100644 --- a/tests/012/quasi.tl +++ b/tests/012/quasi.tl @@ -58,6 +58,12 @@ `<<@~8,3a:s>>` "<< abc>>" `<<@~8,3a:{s ":"}>>` "<< : : : : :a:b:c>>")) +(symacrolet ((n (sqrt 2))) + (mtest + `@~8,4f:(sqrt 2)` " 1.4142" + `@~8,4f:n` " 1.4142")) + + (compile-only (eval-only (compile-file (base-name *load-path*) "temp.tlo") -- cgit v1.2.3