summaryrefslogtreecommitdiffstats
path: root/RELNOTES
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-09-15 06:15:23 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-09-15 06:15:23 -0700
commitd92b5bc1203e5d9a928a3c1da1e5708a7afdafea (patch)
tree7c210f66fabac8e3894d4153b3f392a0e532828c /RELNOTES
parent146e6c338ef0226f1742a48fb33d8738f2769f93 (diff)
downloadtxr-d92b5bc1203e5d9a928a3c1da1e5708a7afdafea.tar.gz
txr-d92b5bc1203e5d9a928a3c1da1e5708a7afdafea.tar.bz2
txr-d92b5bc1203e5d9a928a3c1da1e5708a7afdafea.zip
places: use Lisp-1 macroexpansion where needed.
A test case for this very subtle bug is this: (let ((v (list 1 2 3))) (symacrolet ((x v)) (flet ((x () 42)) (set [x 0] 0)))) Because x is being evaluated in the DWIM brackets which flatten the two namespaces into one, it must be treated as a reference to the flet, and so [x 0] denotes the function call. The assignment is erroneous. The incorrect behavior being fixed is that the places code macro-expands x in the Lisp-2 style under which the symacrolet is not shadowed by the flet. The substitution of v takes place, and the assignment assigns to [v 0]. * share/txr/stdlib/place.tl (sys:l1-setq, sys:l1-val): Use macroexpand-lisp1 rather than macroexpand.
Diffstat (limited to 'RELNOTES')
0 files changed, 0 insertions, 0 deletions