X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefmacro.lisp;h=ac2702f9868b7b22f09f2bf96faeb48a8ac12ab5;hb=840832c6ca7fae0af981d721bdbb38e567d575cf;hp=2bc701b4a00b42bbb4da8a99591ef91c1ae24342;hpb=989580141ab01d799365be12642e54b5d7c83136;p=sbcl.git diff --git a/src/code/defmacro.lisp b/src/code/defmacro.lisp index 2bc701b..ac2702f 100644 --- a/src/code/defmacro.lisp +++ b/src/code/defmacro.lisp @@ -30,20 +30,24 @@ :environment environment) (let ((def `(lambda (,whole ,environment) ,@local-decs - (block ,name - ,new-body)))) + (block ,name + ,new-body))) + ;; if we want to move over to list-style names + ;; [e.g. (DEFMACRO FOO), maybe to support some XREF-like + ;; functionality] here might be a good place to start. + (debug-name (debug-namify "DEFMACRO ~S" name))) `(eval-when (:compile-toplevel :load-toplevel :execute) - (sb!c::%defmacro ',name #',def ',lambda-list ,doc))))))) + (sb!c::%defmacro ',name #',def ',lambda-list ,doc ,debug-name))))))) (macrolet - ((def (times set-args-p) + ((def (times set-p) `(eval-when (,@times) - (defun sb!c::%defmacro (name definition lambda-list doc) + (defun sb!c::%defmacro (name definition lambda-list doc debug-name) ;; old note (ca. 1985, maybe:-): "Eventually %%DEFMACRO ;; should deal with clearing old compiler information for ;; the functional value." - ,@(unless set-args-p - '((declare (ignore lambda-list)))) + ,@(unless set-p + '((declare (ignore lambda-list debug-name)))) (ecase (info :function :kind name) ((nil)) (:function @@ -75,14 +79,17 @@ (style-warn "redefining ~S in DEFMACRO" name)) (setf (sb!xc:macro-function name) definition (fdocumentation name 'function) doc) - ,(when set-args-p + ,(when set-p `(case (widetag-of definition) (#.sb!vm:closure-header-widetag (setf (%simple-fun-arglist (%closure-fun definition)) - lambda-list)) + lambda-list + (%simple-fun-name (%closure-fun definition)) + debug-name)) ((#.sb!vm:simple-fun-header-widetag #.sb!vm:closure-fun-header-widetag) - (setf (%simple-fun-arglist definition) lambda-list)))) + (setf (%simple-fun-arglist definition) lambda-list + (%simple-fun-name definition) debug-name)))) name)))) (progn (def (:load-toplevel :execute) #-sb-xc-host t #+sb-xc-host nil)