(defun canonize-defclass-options (class-name options)
(maplist (lambda (sublist)
(let ((option-name (first (pop sublist))))
- (when (member option-name sublist :key #'first)
+ (when (member option-name sublist :key #'first :test #'eq)
(error 'simple-program-error
:format-control "Multiple ~S options in DEFCLASS ~S."
:format-arguments (list option-name class-name)))))
(:default-initargs
(let (initargs arg-names)
(doplist (key val) (cdr option)
- (when (member key arg-names)
+ (when (member key arg-names :test #'eq)
(error 'simple-program-error
:format-control "~@<Duplicate initialization argument ~
name ~S in :DEFAULT-INITARGS of ~
(if (eq type t)
nil
`('type-check-function (lambda (value)
- (declare (type ,type value))
+ (declare (type ,type value)
+ (optimize (sb-c:store-coverage-data 0)))
value))))
(canon `(:name ',name :readers ',readers :writers ',writers
:initargs ',initargs
(slot-name-illegal "a keyword"))
((constantp name env)
(slot-name-illegal "a constant"))
- ((member name *slot-names-for-this-defclass*)
+ ((member name *slot-names-for-this-defclass* :test #'eq)
(error 'simple-program-error
:format-control "Multiple slots named ~S in DEFCLASS ~S."
:format-arguments (list name class-name))))))
(unless entry
(setq entry (list initform
(gensym)
- `(function (lambda () ,initform))))
+ `(function (lambda ()
+ (declare (optimize
+ (sb-c:store-coverage-data 0)))
+ ,initform))))
(push entry *initfunctions-for-this-defclass*))
(cadr entry)))))