[armedbear-devel] Unbound initargs slot in slot-definitions
Rudolf Schlatte
rudi at constantly.at
Sat Aug 25 21:24:06 UTC 2012
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 at 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 at common-lisp.net
> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel
More information about the armedbear-devel
mailing list