Hi Stas,
This should be fixed in r14134, together with a bug reported by Pascal Costanza.
Thanks,
Rudi
On Aug 13, 2012, at 22:43, Stas Boukarev stassats@gmail.com wrote:
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}>.
-- With best regards, Stas.
armedbear-devel mailing list armedbear-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel