mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 13:49:17 +02:00
Raising a friendly error on non-identifier syntax bindings (previously silently a useless operation).
This commit is contained in:
parent
da328bb88c
commit
2b68fca125
1 changed files with 3 additions and 2 deletions
5
eval.c
5
eval.c
|
@ -820,8 +820,9 @@ static sexp analyze_bind_syntax (sexp ls, sexp eval_ctx, sexp bind_ctx) {
|
||||||
sexp_gc_preserve1(eval_ctx, mac);
|
sexp_gc_preserve1(eval_ctx, mac);
|
||||||
for ( ; sexp_pairp(ls); ls=sexp_cdr(ls)) {
|
for ( ; sexp_pairp(ls); ls=sexp_cdr(ls)) {
|
||||||
if (! (sexp_pairp(sexp_car(ls)) && sexp_pairp(sexp_cdar(ls))
|
if (! (sexp_pairp(sexp_car(ls)) && sexp_pairp(sexp_cdar(ls))
|
||||||
&& sexp_nullp(sexp_cddar(ls)))) {
|
&& sexp_idp(sexp_caar(ls)) && sexp_nullp(sexp_cddar(ls)))) {
|
||||||
res = sexp_compile_error(eval_ctx, "bad syntax binding", sexp_car(ls));
|
res = sexp_compile_error(eval_ctx, "bad syntax binding", sexp_pairp(ls) ? sexp_car(ls) : ls);
|
||||||
|
break;
|
||||||
} else {
|
} else {
|
||||||
if (sexp_idp(sexp_cadar(ls)))
|
if (sexp_idp(sexp_cadar(ls)))
|
||||||
mac = sexp_env_ref(sexp_context_env(eval_ctx), sexp_cadar(ls), SEXP_FALSE);
|
mac = sexp_env_ref(sexp_context_env(eval_ctx), sexp_cadar(ls), SEXP_FALSE);
|
||||||
|
|
Loading…
Add table
Reference in a new issue