diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2018-05-03 20:40:10 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2018-05-03 20:40:10 -0700 |
commit | ad23b416cbd93e49f6fdc0c096c2b309448ef1c2 (patch) | |
tree | 5a8a043b05becf73ca7484f7d17281016679c8e7 /ffi.c | |
parent | 6eadc61ddd50207b582a1bcf2b4a9def30104b7a (diff) | |
download | txr-ad23b416cbd93e49f6fdc0c096c2b309448ef1c2.tar.gz txr-ad23b416cbd93e49f6fdc0c096c2b309448ef1c2.tar.bz2 txr-ad23b416cbd93e49f6fdc0c096c2b309448ef1c2.zip |
bugfix: interpreted destructuring doesn't do specials.
It looks like I neglected to treat dynamically scoped
variables in destructuring; all parameters are treated as
lexical. This is only true in interpreted code; compiled
destructuring treats dynamics properly because it generates a
let to bind all the variables which occur, and then uses
assignment to populate them.
* eval.c (bind_macro_params): Instead of env_vbind, use the
newly introduced lex_or_dyn_bind helper function.
(op_tree_bind, op_mac_param_bind): Save and restore dyn_env
around bind_macro_params and the evaluation of the associated
body. In op_defmacro, this is already done.
Diffstat (limited to 'ffi.c')
0 files changed, 0 insertions, 0 deletions