From e97a2debe1b4c71190533fb2d76e7ceb59a3b07d Mon Sep 17 00:00:00 2001 From: Daphne Preston-Kendal Date: Thu, 30 Dec 2021 00:10:46 +0100 Subject: [PATCH] Friendlier error message for misuse of standard macros --- lib/init-7.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/init-7.scm b/lib/init-7.scm index 8a3ea91f..a8c88a74 100644 --- a/lib/init-7.scm +++ b/lib/init-7.scm @@ -143,13 +143,21 @@ (lambda (expr use-env mac-env) (f expr mac-env)))) -(define er-macro-transformer +(define er-macro-transformer* (lambda (f) (lambda (expr use-env mac-env) (f expr (make-renamer mac-env) (lambda (x y) (identifier=? use-env x use-env y)))))) +(define er-macro-transformer + (lambda (f) + (er-macro-transformer* + (lambda (expr rename compare) + (if (not (pair? expr)) + (error "invalid use of non-identifier macro outside operator postion" expr) + (f expr rename compare)))))) + (define-syntax cond (er-macro-transformer (lambda (expr rename compare)