(declaim (ftype (sfunction (t symbol) t) slot-value))
(defun slot-value (object slot-name)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(value
form))
(defun set-slot-value (object slot-name new-value)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(type-check-function (cadr cell)))
form))
(defun slot-boundp (object slot-name)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell))
(value
form))
(defun slot-makunbound (object slot-name)
- (let* ((wrapper (check-obsolete-instance/wrapper-of object))
+ (let* ((wrapper (valid-wrapper-of object))
(cell (find-slot-cell wrapper slot-name))
(location (car cell)))
(cond ((fixnump location)
(declare (ignore initargs))
(error "Cannot allocate an instance of ~S." class)) ; So sayeth AMOP
+;;; AMOP says that CLASS-SLOTS signals an error for unfinalized classes.
+(defmethod class-slots :before ((class slot-class))
+ (unless (class-finalized-p class)
+ (error 'simple-reference-error
+ :format-control "~S called on ~S, which is not yet finalized."
+ :format-arguments (list 'class-slots class)
+ :references (list '(:amop :generic-function class-slots)))))