[armedbear-devel] initialization of shared slots

Erik Huelsmann ehuels at gmail.com
Wed Jan 26 08:30:17 UTC 2011


Hi Didier,


> So, after some discussion on cll and pro@, I have some precisions about
> this. From what I understand of CLHS now, an implementation is not
> required to initialize a shared slot at class creation time from the
> initform (so far so good for ABCL).
>
> However, the iniform of a shared slot must be evaluated in the dynamic
> environment of the defclass call, even if it's not used to initialize
> the slot right now (see the defclass page). The following test shows
> that ABCL's behavior is currently incorrect in that regard:
>
> (defclass fungy ()
>  ((x :allocation :class
>      :initform (progn
>                  (format *debug-io* "~&x initform~%")
>                  6)
>      :initarg :x)
>   (y :initform (progn
>                  (format *debug-io* "~&y initform~%")
>                  7)
>      :initarg :y)))
>
> CL-USER(1): (defclass fungy () ...)
> #<STANDARD-CLASS FUNGY {1AEE513}>
>
> CL-USER(2): (make-instance 'fungy)
> x initform                                <========= this is too late

Just committed the fix for this to ABCL trunk.


Bye,


Erik.




More information about the armedbear-devel mailing list