From 11f8f163c59cf3a2bec7d814a16a002f8cec38f1 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Fri, 5 Sep 2014 23:00:35 +0900 Subject: [PATCH] dotted lists are allowed in macro calls. --- eval.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eval.c b/eval.c index 11bc6621..3f99e8a5 100644 --- a/eval.c +++ b/eval.c @@ -957,10 +957,11 @@ static sexp analyze (sexp ctx, sexp object, int depth, int defok) { loop: if (sexp_pairp(x)) { - if (sexp_not(sexp_listp(ctx, x))) { + cell = sexp_idp(sexp_car(x)) ? sexp_env_cell(ctx, sexp_context_env(ctx), sexp_car(x), 0) : NULL; + if (sexp_not(sexp_listp(ctx, x)) + && !(cell && sexp_macrop(sexp_cdr(cell)))) { res = sexp_compile_error(ctx, "dotted list in source", x); } else if (sexp_idp(sexp_car(x))) { - cell = sexp_env_cell(ctx, sexp_context_env(ctx), sexp_car(x), 0); if (! cell) { res = analyze_app(ctx, x, depth); if (sexp_exceptionp(res))