summaryrefslogtreecommitdiffstats
path: root/socket.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2018-03-29 06:17:17 -0700
committerKaz Kylheku <kaz@kylheku.com>2018-03-29 06:17:17 -0700
commitca6199a0a48cba367ebc81e6d463c4e0a170f9c5 (patch)
tree9fa27a593d96121c6cc26eda15a39d87a92d44be /socket.h
parentff3da7279363941f489e210983141f55bf2c9079 (diff)
downloadtxr-ca6199a0a48cba367ebc81e6d463c4e0a170f9c5.tar.gz
txr-ca6199a0a48cba367ebc81e6d463c4e0a170f9c5.tar.bz2
txr-ca6199a0a48cba367ebc81e6d463c4e0a170f9c5.zip
eval: bugs/regressions in handling nil in param expansion.
Due to a number of changes since December 2016, we have two problems in the evaluator: (lambda (nil)) is accepted rather than complaining that nil is not bindable; and (tree-bind (()) '(3)) silently proceeds rather than diagnosing that the atom 3 doesn't match the empty pattern (). * eval.c (expand_opt_params_rec, expand_params_rec): When not expandin macro-style params, check for a parameter not being bindable, and also avoid recursion entirely when not doing macro style. (bind_macro_params): Don't assume that an atom parameter is a variable, but rather tha a non-list parameter is a variable. Otherwise we bind nil rather than treating it as an empty sub-pattern. Before the December 2016 change (744340ab), we were checking bindablep here; the idea was to hoist the detailed checking to expansion time. But then the pattern versus variable distinction was bungled here.
Diffstat (limited to 'socket.h')
0 files changed, 0 insertions, 0 deletions