+initform-unsupplied+ should not shadow user-supplied arguments.

This commit is contained in:
jjgarcia 2006-03-20 09:03:54 +00:00
parent d41d4544e8
commit 4083b63b08

View file

@ -115,27 +115,14 @@
;; we compute the value and add it to the list of initargs.
(dolist (scan (class-default-initargs class))
(let ((initarg (first scan))
(value (third scan)))
(when (eql (si::search-keyword initargs initarg) 'si::failed)
(value (third scan))
(supplied-value (si::search-keyword initargs initarg)))
(when (or (eq supplied-value '+initform-unsupplied+)
(eq supplied-value 'si::failed))
(when (eq supplied-value '+initform-unsupplied+)
(remf initargs initarg))
(setf value (if (functionp value) (funcall value) value)
initargs (append initargs (list initarg value))))))
#+nil
(dolist (slotd (class-slots class))
(let ((found nil)
(defaults '())
(slot-definition-initargs (slot-definition-initargs slotd)))
(dolist (key slot-definition-initargs)
(unless (eql (si::search-keyword initargs key) 'si::failed)
(setq found t)))
(unless found
(dolist (scan (class-default-initargs class))
(let ((initarg (first scan))
(value (third scan)))
(when (member initarg slot-definition-initargs)
(setf initargs
(list* initarg (if (functionp value) (funcall value) value)
initargs))
(return)))))))
initargs)
(defmethod direct-slot-definition-class ((class T) &rest canonicalized-slot)