summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-04-15 18:28:36 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-04-15 18:28:36 -0700
commit9d59b9a607b0ebee9102ec7e2da00d7f24b54b0e (patch)
treeb682e7f5b6b707064668ca8a8e7bdc82e20654d8 /lib.h
parentc7089d15344e963397e9c58864f476729caeb225 (diff)
downloadtxr-9d59b9a607b0ebee9102ec7e2da00d7f24b54b0e.tar.gz
txr-9d59b9a607b0ebee9102ec7e2da00d7f24b54b0e.tar.bz2
txr-9d59b9a607b0ebee9102ec7e2da00d7f24b54b0e.zip
Bugfix expansion: return-from, sys:abscond-from, block*.
These three forms are not being traversed properly by the macro expander. * eval.c (do_expand): Do not treat return-from, sys:abscond-from and block* in the same case as block. block* evaluates all of its forms and so can just be walked as a function call in the fallback case. The other two must be in their own case because we must not use expand_progn on them; they do not evaluate a progn-like list of forms. This leads to inappropriate optimizations like (return-from x (progn a b c)) -> (return-from x a b c).
Diffstat (limited to 'lib.h')
0 files changed, 0 insertions, 0 deletions