X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffunction-names.lisp;h=822ab8c23ec6f7f1b90134052db6fb369a08b504;hb=8643c93d4db277f6e1cb880a42407ff29e19f618;hp=0f0f743e9058e77d1cb5103c486306a63887c1c4;hpb=af178240ffbda39e9c3bf584ad8ed0adcf4b6abd;p=sbcl.git diff --git a/src/code/function-names.lisp b/src/code/function-names.lisp index 0f0f743..822ab8c 100644 --- a/src/code/function-names.lisp +++ b/src/code/function-names.lisp @@ -6,9 +6,9 @@ (defun %define-fun-name-syntax (symbol checker) (let ((found (assoc symbol *valid-fun-names-alist* :test #'eq))) (if found - (setf (cdr found) checker) - (setq *valid-fun-names-alist* - (acons symbol checker *valid-fun-names-alist*))))) + (setf (cdr found) checker) + (setq *valid-fun-names-alist* + (acons symbol checker *valid-fun-names-alist*))))) (defmacro define-function-name-syntax (symbol (var) &body body) #!+sb-doc @@ -45,16 +45,34 @@ use as a BLOCK name in the function in question." (define-function-name-syntax setf (name) (when (and (cdr name) - (consp (cdr name))) + (consp (cdr name))) (destructuring-bind (fun &rest rest) (cdr name) (when (null rest) - (typecase fun - ;; ordinary (SETF FOO) case - (symbol (values t fun)) - ;; reasonable (SETF (QUUX BAZ)) case [but not (SETF (SETF - ;; FOO))] - (cons (unless (eq (car fun) 'setf) - (valid-function-name-p fun)))))))) + (typecase fun + ;; ordinary (SETF FOO) case + (symbol (values t fun)) + ;; reasonable (SETF (QUUX BAZ)) case [but not (SETF (SETF + ;; FOO))] + (cons (unless (eq (car fun) 'setf) + (valid-function-name-p fun)))))))) + +(defun macro-function-name (name) + (when (and (cdr name) + (consp (cdr name))) + (destructuring-bind (fun &rest rest) (cdr name) + (when (null rest) + (typecase fun + ;; (DEFMACRO FOO) + (symbol (values t fun)) + ;; (DEFMACRO (SETF FOO)) + (cons (when (eq (car fun) 'setf) + (valid-function-name-p fun)))))))) + +(define-function-name-syntax defmacro (name) + (macro-function-name name)) + +(define-function-name-syntax macrolet (name) + (macro-function-name name)) #-sb-xc-host (defun !function-names-cold-init ()