Friendlier error message for misuse of standard macros

This commit is contained in:
Daphne Preston-Kendal 2021-12-30 00:10:46 +01:00
parent 770b4d367b
commit e97a2debe1

View file

@ -143,13 +143,21 @@
(lambda (expr use-env mac-env) (lambda (expr use-env mac-env)
(f expr mac-env)))) (f expr mac-env))))
(define er-macro-transformer (define er-macro-transformer*
(lambda (f) (lambda (f)
(lambda (expr use-env mac-env) (lambda (expr use-env mac-env)
(f expr (f expr
(make-renamer mac-env) (make-renamer mac-env)
(lambda (x y) (identifier=? use-env x use-env y)))))) (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 (define-syntax cond
(er-macro-transformer (er-macro-transformer
(lambda (expr rename compare) (lambda (expr rename compare)