X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Fdefboot.lisp;h=89c3111b392fa6c7d1d0670ec699b7d7bf2d6f63;hb=a1a2c079c7654defb618baad0dddcf0eaf2ce64f;hp=f0959353d007ff78bcb91471017623f2aaeb91c3;hpb=cea4896b2482b7b2b429c1631d774b4cfbc0efba;p=sbcl.git diff --git a/src/code/defboot.lisp b/src/code/defboot.lisp index f095935..89c3111 100644 --- a/src/code/defboot.lisp +++ b/src/code/defboot.lisp @@ -26,7 +26,7 @@ `(eval-when (:compile-toplevel :load-toplevel :execute) (setq *package* (find-undeleted-package-or-lose ',package-designator)))) -;;; MULTIPLE-VALUE-FOO +;;;; MULTIPLE-VALUE-FOO (defun list-of-symbols-p (x) (and (listp x) @@ -91,12 +91,12 @@ ;;; other things defined in terms of COND (defmacro-mundanely when (test &body forms) #!+sb-doc - "First arg is a predicate. If it is non-null, the rest of the forms are + "If the first argument is true, the rest of the forms are evaluated as a PROGN." `(cond (,test nil ,@forms))) (defmacro-mundanely unless (test &body forms) #!+sb-doc - "First arg is a predicate. If it is null, the rest of the forms are + "If the first argument is not true, the rest of the forms are evaluated as a PROGN." `(cond ((not ,test) nil ,@forms))) (defmacro-mundanely and (&rest forms) @@ -169,12 +169,7 @@ (if (and (consp name) (eq (first name) 'setf)) (setf (fdocumentation (second name) 'setf) doc) (setf (fdocumentation name 'function) doc))) - (sb!c::proclaim-as-function-name name) - (if (eq (info :function :where-from name) :assumed) - (progn - (setf (info :function :where-from name) :defined) - (if (info :function :assumed-type name) - (setf (info :function :assumed-type name) nil)))) + (become-defined-function-name name) (when (or inline-expansion (info :function :inline-expansion name)) (setf (info :function :inline-expansion name) @@ -190,6 +185,16 @@ (defun sb!c::%defun (name def doc source) (declare (ignore source)) (setf (sb!eval:interpreted-function-name def) name) + (ecase (info :function :where-from name) + (:assumed + (setf (info :function :where-from name) :defined) + (setf (info :function :type name) + (extract-function-type def)) + (when (info :function :assumed-type name) + (setf (info :function :assumed-type name) nil))) + (:declared) + (:defined + (setf (info :function :type name) (extract-function-type def)))) (sb!c::%%defun name def doc)) ;;;; DEFVAR and DEFPARAMETER