diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-04-15 18:28:36 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-04-15 18:28:36 -0700 |
commit | 9d59b9a607b0ebee9102ec7e2da00d7f24b54b0e (patch) | |
tree | b682e7f5b6b707064668ca8a8e7bdc82e20654d8 /lib.h | |
parent | c7089d15344e963397e9c58864f476729caeb225 (diff) | |
download | txr-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