From 2b68fca125d2bc40be7497d45a93cf848c7e1960 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Tue, 8 Jan 2013 22:43:25 +0900 Subject: [PATCH] Raising a friendly error on non-identifier syntax bindings (previously silently a useless operation). --- eval.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eval.c b/eval.c index df8cfdb1..56cfebb7 100644 --- a/eval.c +++ b/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); for ( ; sexp_pairp(ls); ls=sexp_cdr(ls)) { if (! (sexp_pairp(sexp_car(ls)) && sexp_pairp(sexp_cdar(ls)) - && sexp_nullp(sexp_cddar(ls)))) { - res = sexp_compile_error(eval_ctx, "bad syntax binding", sexp_car(ls)); + && sexp_idp(sexp_caar(ls)) && sexp_nullp(sexp_cddar(ls)))) { + res = sexp_compile_error(eval_ctx, "bad syntax binding", sexp_pairp(ls) ? sexp_car(ls) : ls); + break; } else { if (sexp_idp(sexp_cadar(ls))) mac = sexp_env_ref(sexp_context_env(eval_ctx), sexp_cadar(ls), SEXP_FALSE);