summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-04-05 19:27:34 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-04-05 19:27:34 -0700
commit444853031ea9e9a2a79c259c2696cc0b6dda18ff (patch)
tree6c7c2b8ac44d727ac9bf55256fcd3cfbba187e3f /eval.c
parent6ca6be767f8ac84a8c601c08d6e06822ced556f9 (diff)
downloadtxr-444853031ea9e9a2a79c259c2696cc0b6dda18ff.tar.gz
txr-444853031ea9e9a2a79c259c2696cc0b6dda18ff.tar.bz2
txr-444853031ea9e9a2a79c259c2696cc0b6dda18ff.zip
quasiliterals: issue in printing embedded syms.
The op macro replaces syntax like @3 with gensyms. The problem is these genyms are not wrapped with (sys:var ...). For instance: `foo@{1}bar` ;; (sys:quasi "foo" (sys:var 1 () ()) "bar") might, inside an op expression turn into: (sys:quasi "foo" #:arg001 "bar") If this object is printed, it renders as `foo#:arg001bar` which is garbage syntax. After this fix, that will come out as: `foo@{#:arg001}bar` It is not read/print consistent, but it has the same meaning under evaluation. * lib.c (out_quasi_str_sym): New static function. Formed out of a block of code taken from out_quasi_str. (out_quasi_str): Print (sys:var ...) symbols via a call to out_quasi_str_sym, eliminating a block of code. If an element itself is a symbol, then print that using out_quasi_str_sym also.
Diffstat (limited to 'eval.c')
0 files changed, 0 insertions, 0 deletions