Having two classes: (defclass slot-d-1 (mop:standard-direct-slot-definition) ()) (defclass slot-d-2 (mop:standard-direct-slot-definition) (a))
(slot-boundp (make-instance 'slot-d-2) 'sys::initargs) => T
(slot-boundp (make-instance 'slot-d-2) 'sys::initargs) => NIL
So, having a slot makes initargs unbound.
Below is the actual code which suffers from it:
(defpackage test (:use :cl :mop))
(in-package test)
(defclass storable-class (standard-class) ())
(defmethod validate-superclass ((class standard-class) (superclass storable-class)) t)
(defmethod validate-superclass ((class storable-class) (superclass standard-class)) t)
(defclass storable-direct-slot-definition (standard-direct-slot-definition) ((storep :initarg :storep :initform t :reader store-slot-p)))
(defmethod direct-slot-definition-class ((class storable-class) &key) (find-class 'storable-direct-slot-definition))
;;;
(defclass identifiable () ((id :accessor id :initform nil :storep nil)) (:metaclass storable-class))
The last form receives an error:
The slot INITARGS is unbound in the object #<STORABLE-DIRECT-SLOT-DEFINITION {34C1EFE7}>.