summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-12-29 19:06:33 -0800
committerKaz Kylheku <kaz@kylheku.com>2016-12-29 19:06:33 -0800
commitd62c9544d7aa667939c853ac668116270bc7a2a7 (patch)
tree7d0c32809ab6008f55ef7aa6cf200e5f89a9efe9 /lib.c
parent2fd65e25a48810bc5a926b3f01974cb5624afb71 (diff)
downloadtxr-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