X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefmacro.lisp;h=eac1da59ef74ff12580643d76263cb4f252ea74f;hb=b19093fa94d6e1785abee99c35c9a610e8777671;hp=8a0f43ea17a2fdfcbfebf44103e082ce2d8f15aa;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/code/defmacro.lisp b/src/code/defmacro.lisp index 8a0f43e..eac1da5 100644 --- a/src/code/defmacro.lisp +++ b/src/code/defmacro.lisp @@ -11,9 +11,6 @@ (in-package "SB!IMPL") -(file-comment - "$Header$") - ;;; the guts of the DEFMACRO macro, pulled out into a separate ;;; function in order to make it easier to express the common ;;; bootstrap idiom @@ -87,14 +84,16 @@ ;;; EVAL-WHEN, which might be easier to understand than the current ;;; approach based on IR1 magic. -- WHN 19990811 (def!macro defmacro-mundanely (name lambda-list &body body) - `(setf (sb!xc:macro-function ',name) - ,(let ((whole (gensym "WHOLE-")) - (environment (gensym "ENVIRONMENT-"))) - (multiple-value-bind (new-body local-decs doc) - (parse-defmacro lambda-list whole body name 'defmacro - :environment environment) - (declare (ignore doc)) - `(lambda (,whole ,environment) - ,@local-decs - (block ,name - ,new-body)))))) + `(progn + (setf (sb!xc:macro-function ',name) + ,(let ((whole (gensym "WHOLE-")) + (environment (gensym "ENVIRONMENT-"))) + (multiple-value-bind (new-body local-decs doc) + (parse-defmacro lambda-list whole body name 'defmacro + :environment environment) + (declare (ignore doc)) + `(lambda (,whole ,environment) + ,@local-decs + (block ,name + ,new-body))))) + ',name))