summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-02-03 10:18:15 -0800
committerKaz Kylheku <kaz@kylheku.com>2017-02-03 10:18:15 -0800
commite3ac780998d8b32d5c10d7aebcca88af7c82b80e (patch)
treeef73449fbb7928af06b893601087bc09f84a61b3 /eval.c
parentf3708a552407c52cd4676b10649ac0d20c8544fd (diff)
downloadtxr-e3ac780998d8b32d5c10d7aebcca88af7c82b80e.tar.gz
txr-e3ac780998d8b32d5c10d7aebcca88af7c82b80e.tar.bz2
txr-e3ac780998d8b32d5c10d7aebcca88af7c82b80e.zip
When expanding sys:lisp1-value, check for bad form.
* eval.c (expand_lisp1_value): If the first argument is an object other than a bindable symbol, throw an error.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index e1431fdf..15adbcaa 100644
--- a/eval.c
+++ b/eval.c
@@ -2077,8 +2077,12 @@ static val expand_lisp1_value(val form, val menv)
val sym = second(form);
val binding_type = lexical_lisp1_binding(menv, sym);
- if (nilp(binding_type))
+ if (nilp(binding_type)) {
+ if (!bindable(sym))
+ eval_error(form, lit("~s: misapplied to form ~s"),
+ first(form), sym, nao);
return form;
+ }
if (binding_type == var_k)
return sym;