summaryrefslogtreecommitdiffstats
path: root/autoload.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2023-05-24 07:31:16 -0700
committerKaz Kylheku <kaz@kylheku.com>2023-05-24 07:31:16 -0700
commitbbb79a948de4688b44ba18ae37a1a6abb30e84d7 (patch)
tree6960a3e30df34e05e33beda72ae232bb889c7e2a /autoload.c
parentb4f23d86dd71504405f2f26278941dd8325c14ab (diff)
downloadtxr-bbb79a948de4688b44ba18ae37a1a6abb30e84d7.tar.gz
txr-bbb79a948de4688b44ba18ae37a1a6abb30e84d7.tar.bz2
txr-bbb79a948de4688b44ba18ae37a1a6abb30e84d7.zip
label/flet: bug: empty case wallops symbol macros.
* eval.c (make_var_shadowing_env): We cannot return the original env in the empty variable case, but earnestly make a new one. This function is used by the expander when walking the lbind/fbind special from emitted by labels/flet. That form clobbers the environment via make_fun_shadowing_env, which calls make_var_shadowing_env and then destructively moves the variable bindings to the function binding slot of the environment. The manifestation is that when we have (symacrolet ((x 1)) (labels () x)), the x fails to expand; it has been wrongly moved to the function bindings area of the macro environment.
Diffstat (limited to 'autoload.c')
0 files changed, 0 insertions, 0 deletions