diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-12-29 19:06:33 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-12-29 19:06:33 -0800 |
commit | d62c9544d7aa667939c853ac668116270bc7a2a7 (patch) | |
tree | 7d0c32809ab6008f55ef7aa6cf200e5f89a9efe9 /lib.c | |
parent | 2fd65e25a48810bc5a926b3f01974cb5624afb71 (diff) | |
download | txr-d62c9544d7aa667939c853ac668116270bc7a2a7.tar.gz txr-d62c9544d7aa667939c853ac668116270bc7a2a7.tar.bz2 txr-d62c9544d7aa667939c853ac668116270bc7a2a7.zip |
Check assignment special forms at expansion time.
* eval.c (lispq_setq_s, setqf_s): New symbol variables.
(op_defvarl, op_defsymacro, op_defmacro, op_setq,
op_lisp1_setq, op_setq): Drop bindability checks.
In the case of defmacro, this is already taken care
of so the check is redundant.
(do_expand): Add bindable check to defvar_s and cousins. In
the function form fallback case, check for the various
assignment operators and check their argument count and
bindability of destination symbol.
(eval_init): Initialize new symbol variables; register
corresponding special operators using variables.
Diffstat (limited to 'lib.c')
0 files changed, 0 insertions, 0 deletions