Alain Picard wrote:
>
> Hello all,
>
> I've noticed that elephant blithely ignores type declarations on slots;
> e.g. something like this:
>
> (deftype position ()
>   `(integer 1 99))
>
>
> (defclass foo-object ()
>   ((name          :type string
>                   :index t
>                 :reader  foo-name
>                   :initarg :name)
>    (position      :type     position
>                   :accessor foo-position
>                   :initform 1))
>   (:metaclass persistent-metaclass))
>
> Elephant will happily let me store 100 in the foo-object position slot.

Yes, the implementation is responsible for checking this.

If you're using SBCL, read this:

  http://www.sbcl.org/manual/Declarations-as-Assertions.html

Notably,

  CLOS slot types form a notable exception. Types declared
  using the :type slot option in defclass are asserted if and
  only if the class was defined in safe code and the slot
  access location is in safe code as well.

Would you propose that Elephant check the type as well
when serializing slots?

  Leslie

-- 
http://www.linkedin.com/in/polzer


_______________________________________________
elephant-devel site list
elephant-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/elephant-devel

Reply via email to