0.6.12.64:
[sbcl.git] / src / pcl / fast-init.lisp
index f49a8b4..3869368 100644 (file)
             (sym (make-instance-function-symbol key)))
        (push key *make-instance-function-keys*)
        (when sym
+         ;; (famous last words:
+         ;;   1. Don't worry, I know what I'm doing.
+         ;;   2. You and what army?
+         ;;   3. If you were as smart as you think you are, you
+         ;;      wouldn't be a copy.
+         ;; This is case #1.:-) Even if SYM hasn't been defined yet,
+         ;; it must be an implementation function, or we we wouldn't
+         ;; have expanded into it. So declare SYM as defined, so that
+         ;; even if it hasn't been defined yet, the user doesn't get
+         ;; obscure warnings about undefined internal implementation
+         ;; functions like HAIRY-MAKE-instance-name.
+         (sb-kernel:become-defined-function-name sym)
          `(,sym ',class (list ,@initargs)))))))
 
 (defmacro expanding-make-instance-top-level (&rest forms &environment env)
                                     'initialize-info name)))
                 *initialize-info-cached-slots*)))
     `(progn
-       (defstruct initialize-info
+       (defstruct (initialize-info (:copier nil))
         key wrapper
         ,@(mapcar #'(lambda (name)
                       `(,name :unknown))