X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefbangmacro.lisp;h=723a04e609f55752729212cf1a4f782a95de9b01;hb=7f1e94ae961a198e00daf281eb1dc858e5b2dcc7;hp=c2572dc08a04389acfec613c9fb5f88f4d5f3b96;hpb=4eb1a6d3ad2b7dcc19ac0ec979a1eb1eb049659a;p=sbcl.git diff --git a/src/code/defbangmacro.lisp b/src/code/defbangmacro.lisp index c2572dc..723a04e 100644 --- a/src/code/defbangmacro.lisp +++ b/src/code/defbangmacro.lisp @@ -38,12 +38,12 @@ (defmacro def!macro (name &rest rest) #-(or sb-xc-host sb-xc) `(defmacro ,name ,@rest) #+sb-xc-host `(progn - (defmacro ,name ,@rest) - ,(let ((uncrossed-args `(,(uncross name) ,@rest))) - (if (boundp '*delayed-def!macros*) - `(push (make-delayed-def!macro :args ',uncrossed-args) - *delayed-def!macros*) - `(sb!xc:defmacro ,@uncrossed-args)))) + (defmacro ,name ,@rest) + ,(let ((uncrossed-args `(,(uncross name) ,@rest))) + (if (boundp '*delayed-def!macros*) + `(push (make-delayed-def!macro :args ',uncrossed-args) + *delayed-def!macros*) + `(sb!xc:defmacro ,@uncrossed-args)))) ;; When cross-compiling, we don't want the DEF!MACRO to have any ;; effect at compile time, because (1) we already defined the macro ;; when building the cross-compiler, so at best it would be redundant @@ -62,9 +62,9 @@ (if (boundp '*delayed-def!macros*) (progn (mapcar (lambda (x) - (let ((*package* (delayed-def!macro-package x))) - (eval `(sb!xc:defmacro ,@(delayed-def!macro-args x))))) - (reverse *delayed-def!macros*)) + (let ((*package* (delayed-def!macro-package x))) + (eval `(sb!xc:defmacro ,@(delayed-def!macro-args x))))) + (reverse *delayed-def!macros*)) ;; We shouldn't need this list any more. Making it unbound serves as a ;; signal to DEF!MACRO that it needn't delayed DEF!MACROs any more. ;; It is also generally a good thing for other reasons: it frees