[armedbear-devel] reinitialize-instance on class metaobjects incorrect

Rudolf Schlatte rudi at constantly.at
Wed Dec 5 15:16:47 UTC 2012


On Dec 3, 2012, at 01:03, Pascal Costanza <pc at p-cos.net> wrote:

> Hi,
> 
> Consider the following test case:
> 
> CL-USER(1): (use-package :mop)
> T
> CL-USER(2): (defclass a () ())
> #<STANDARD-CLASS A {794563AA}>
> CL-USER(3): (defclass b (a) ())
> #<STANDARD-CLASS B {62F6FB59}>
> CL-USER(4): (finalize-inheritance (find-class 'a))
> NIL
> CL-USER(5): (finalize-inheritance (find-class 'b))
> NIL
> CL-USER(6): (class-precedence-list (find-class 'b))
> (#<STANDARD-CLASS B {62F6FB59}> #<STANDARD-CLASS A {794563AA}> #<STANDARD-CLASS STANDARD-OBJECT {23309E87}> #<BUILT-IN-CLASS T {100C62C8}>)
> CL-USER(7): (reinitialize-instance (find-class 'b))
> #<STANDARD-CLASS B {62F6FB59}>
> CL-USER(8): (class-precedence-list (find-class 'b))
> (#<STANDARD-CLASS B {62F6FB59}> #<STANDARD-CLASS STANDARD-OBJECT {23309E87}> #<BUILT-IN-CLASS T {100C62C8}>)
> 
> The invocation of reinitialize-instance obviously reinitialized the direct-superclasses slot, and thus removed the superclass a.

That was a maze of twisty little :after methods on reinitialize-instance / shared-initialize, should be fixed in r14293.  Thanks for the report!

Rudi





More information about the armedbear-devel mailing list