X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdefmacro.lisp;h=2bc701b4a00b42bbb4da8a99591ef91c1ae24342;hb=5bf4a6a677c80a71dfa31b5c9c374f986594392f;hp=276c6d4c0250db31ce4f53a073075e256f73f322;hpb=512f941895f93afd4cf2ffedfd02124faedaa8ff;p=sbcl.git diff --git a/src/code/defmacro.lisp b/src/code/defmacro.lisp index 276c6d4..2bc701b 100644 --- a/src/code/defmacro.lisp +++ b/src/code/defmacro.lisp @@ -42,6 +42,8 @@ ;; 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)))) (ecase (info :function :kind name) ((nil)) (:function @@ -106,21 +108,23 @@ ;;; DEFMACRO-MUNDANELY is like SB!XC:DEFMACRO, except that it doesn't ;;; have any EVAL-WHEN or IR1 magic associated with it, so it only ;;; takes effect in :LOAD-TOPLEVEL or :EXECUTE situations. -;;; -;;; FIXME: It'd probably be good (especially for DEFMACRO) -;;; to make this share more code with DEFMACRO. (def!macro defmacro-mundanely (name lambda-list &body body) - (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) - `(progn - (setf (sb!xc:macro-function ',name) - (lambda (,whole ,environment) - ,@local-decs - (block ,name - ,new-body))) - (setf (fdocumentation ',name 'macro) - ,doc) - ',name)))) + + ;; old way: + ;;(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) + ;; `(progn + ;; (setf (sb!xc:macro-function ',name) + ;; (lambda (,whole ,environment) + ;; ,@local-decs + ;; (block ,name + ;; ,new-body))) + ;; (setf (fdocumentation ',name 'macro) + ;; ,doc) + ;; ',name))) + + `(let () + (sb!xc:defmacro ,name ,lambda-list ,@body)))