[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