[bknr-devel] bknr.indices, the slot NIL is missing from the object

Klaus Unger UngerKlaus at gmx.de
Thu Feb 21 02:15:56 UTC 2008


Hi,

when using class indices they do not have a slot name. On 
destruction/index-remove this throws a condition on checking slot-boundp.

I am using SBCL 1.0.14.23 and the latest bknr indices code, only indices, 
nothing else.

Best regards
 Klaus

;Package changed to BKNR.INDICES
#<PACKAGE "BKNR.INDICES">

BKNR.INDICES>
(defvar *class-index* (index-create 'class-index :index-subclasses t))

*CLASS-INDEX*

BKNR.INDICES>
(defclass base-object ()
  ()
  (:metaclass indexed-class)
  (:class-indices (class :index *class-index*
    :slots nil
    :index-reader objects-of-class
    :index-values all-objects
    :index-subclasses t
    :index-keys all-class-names)
  (classes :index-type class-index
    :index-initargs (:index-superclasses t)
    :slots nil
    :index-subclasses t
    :index-reader objects-with-class)))

#<INDEXED-CLASS BASE-OBJECT>
; in: LAMBDA NIL
;     (SB-KERNEL:FLOAT-WAIT)
; 
; note: deleting unreachable code
; 
; compilation unit finished
;   printed 1 note

BKNR.INDICES>
(defclass child1 (base-object)
  ()
  (:metaclass indexed-class))

#<INDEXED-CLASS CHILD1>

BKNR.INDICES>
(defclass child2 (base-object)
  ((a :initarg :a))
  (:metaclass indexed-class))

#<INDEXED-CLASS CHILD2>

BKNR.INDICES>
(make-instance 'child1)

#<CHILD1 {AC66381}>

BKNR.INDICES>
(all-objects)

(#<CHILD1 {AC66381}>)

BKNR.INDICES>
(destroy-object (first (all-objects)))

When attempting to test to see whether slot is bound (SLOT-BOUNDP),
the slot NIL is missing from the object #<CHILD1 {A7422D9}>.
   [Condition of type SIMPLE-ERROR]
	0: [ABORT] Return to SLIME's top level.
	1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" 
{B54A251}>)
]> Quit debug



More information about the Bknr-devel mailing list