0.pre7.74:
[sbcl.git] / src / compiler / proclaim.lisp
index 0a6e7e3..8a616d0 100644 (file)
@@ -81,6 +81,8 @@
             decl-spec)))))
 
 (defun sb!xc:proclaim (raw-form)
+  #+sb-xc (/show0 "entering PROCLAIM, RAW-FORM=..")
+  #+sb-xc (/hexstr raw-form)
   (let* ((form (canonized-decl-spec raw-form))
         (kind (first form))
         (args (rest form)))
 
             ;; Now references to this function shouldn't be warned
             ;; about as undefined, since even if we haven't seen a
-            ;; definition yet, we know one is planned. (But if this
-            ;; function name was already declared as a structure
-            ;; accessor, then that was already been taken care of.)
-            (unless (info :function :accessor-for name)
-              (proclaim-as-fun-name name)
-              (note-name-defined name :function))
+            ;; definition yet, we know one is planned. 
+            ;;
+            ;; Other consequences of we-know-you're-a-function-now
+            ;; are appropriate too, e.g. any MACRO-FUNCTION goes away.
+            (proclaim-as-fun-name name)
+            (note-name-defined name :function)
 
             ;; the actual type declaration
             (setf (info :function :type name) type
        (setq *policy* (process-optimize-decl form *policy*)))
       ((inline notinline maybe-inline)
        (dolist (name args)
-        ;; (CMU CL did (PROCLAIM-AS-FUN-NAME NAME) here, but that
-        ;; seems more likely to surprise the user than to help him, so
-        ;; we don't do it.)
+        (proclaim-as-fun-name name) ; since implicitly it is a function
         (setf (info :function :inlinep name)
               (ecase kind
                 (inline :inline)
       (t
        (unless (info :declaration :recognized kind)
         (compiler-warning "unrecognized declaration ~S" raw-form)))))
+  #+sb-xc (/show0 "returning from PROCLAIM")
   (values))