summaryrefslogtreecommitdiffstats
path: root/struct.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-13 20:23:18 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-13 20:23:18 -0700
commitd32527312c4467817eef8527907fccb3cc5ed42a (patch)
tree81a176256dbb27e6e58ea3038631029dd6b3676f /struct.h
parentf3fddb31b01d7f015d9f35b6c6312fad28177ae4 (diff)
downloadtxr-d32527312c4467817eef8527907fccb3cc5ed42a.tar.gz
txr-d32527312c4467817eef8527907fccb3cc5ed42a.tar.bz2
txr-d32527312c4467817eef8527907fccb3cc5ed42a.zip
expander bug: sequential vars with no init forms.
The test case for this is (let* (a (b a))) which raises suspicion by diagnosing an "unbound variable a" error against the (b a) var-init pair. The error goes away if we make it (let* ((a nil) (b a))), a perfectly equivalent form. The diagnostic is just a symptom; the problem is that in the case when a doesn't have an initform, the (b a) var-init pair is being incorrectly expanded in an environment that hasn't been extended with the a variable. * eval.c (expand_vars): In the sequential binding situation (let*), we must extend the environment for each variable in the no-init-form case exactly as we do in the with-init-form case.
Diffstat (limited to 'struct.h')
0 files changed, 0 insertions, 0 deletions