Microoptimise TN-LEXICAL-DEPTH
[sbcl.git] / src / compiler / info-functions.lisp
index d4cb02a..d763505 100644 (file)
 ;;; can't assume that they aren't just naming a function (SETF FOO)
 ;;; for the heck of it. NAME is already known to be well-formed.
 (defun note-if-setf-fun-and-macro (name)
-  (when (consp name)
-    (when (or (info :setf :inverse name)
-              (info :setf :expander name))
+  (when (and (consp name)
+             (eq (car name) 'setf))
+    (when (or (info :setf :inverse (second name))
+              (info :setf :expander (second name)))
       (compiler-style-warn
        "defining as a SETF function a name that already has a SETF macro:~
        ~%  ~S"
       (frob :where-from :assumed)
       (frob :inlinep)
       (frob :kind)
+      (frob :macro-function)
       (frob :inline-expansion-designator)
       (frob :source-transform)
       (frob :structure-accessor)
@@ -141,14 +143,11 @@ only."
   (declare (symbol symbol))
   (let* ((fenv (when env (lexenv-funs env)))
          (local-def (cdr (assoc symbol fenv))))
-    (cond (local-def
-           (if (and (consp local-def) (eq (car local-def) 'macro))
-               (cdr local-def)
-               nil))
-          ((eq (info :function :kind symbol) :macro)
-           (values (info :function :macro-function symbol)))
-          (t
-           nil))))
+    (if local-def
+        (if (and (consp local-def) (eq (car local-def) 'macro))
+            (cdr local-def)
+            nil)
+        (values (info :function :macro-function symbol)))))
 
 (defun (setf sb!xc:macro-function) (function symbol &optional environment)
   (declare (symbol symbol) (type function function))