diff --git a/scheme/last-revision b/scheme/last-revision index 3f04454..d923863 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1858 +1859 diff --git a/scheme/psyntax.expander.ss b/scheme/psyntax.expander.ss index 8a85771..d2010e8 100644 --- a/scheme/psyntax.expander.ss +++ b/scheme/psyntax.expander.ss @@ -2713,7 +2713,6 @@ (lambda (p e r) (do-macro-call (local-macro-transformer p) e r))) (define (chi-global-macro p e r) - ;;; FIXME: does not handle macro!? (let ((lib (car p)) (loc (cdr p))) (unless (eq? lib '*interaction*) @@ -2722,6 +2721,10 @@ (let ((transformer (cond ((procedure? x) x) + ((and (pair? x) + (eq? (car x) 'macro!) + (procedure? (cdr x))) + (cdr x)) (else (assertion-violation 'chi-global-macro "BUG: not a procedure" x))))) (do-macro-call transformer e r)))))