mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-01-02 07:30:55 -08:00
+initform-unsupplied+ should not shadow user-supplied arguments.
This commit is contained in:
parent
d41d4544e8
commit
4083b63b08
1 changed files with 6 additions and 19 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue