[armedbear-ticket] [armedbear] #277: reinitialize-instance on class metaobjects incorrect
![](https://secure.gravatar.com/avatar/bfc2df4941985c6757bb9cc05a33e95f.jpg?s=120&d=mm&r=g)
#277: reinitialize-instance on class metaobjects incorrect -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: rschlatte Type: defect | Status: new Priority: major | Milestone: Component: (A)MOP | Version: Keywords: | -----------------------+---------------------------------------------------- Reported by Pascal Costanza: 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. However, according to the HyperSpec, the general protocol for reinitialize-instance is always that slots for which no initargs are provided through reinitialize-instance should be left untouched. This also restated implicitly in the CLOS MOP specification, for example in the section "Initialization of Class Metaobjects:" The defaulted superclass list is specified to be only assigned during initialization, but not during reinitialization. -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/277> armedbear <http://common-lisp.net/project/armedbear> armedbear
![](https://secure.gravatar.com/avatar/bfc2df4941985c6757bb9cc05a33e95f.jpg?s=120&d=mm&r=g)
#277: reinitialize-instance on class metaobjects incorrect -----------------------+---------------------------------------------------- Reporter: rschlatte | Owner: rschlatte Type: defect | Status: new Priority: blocker | Milestone: 1.1.0 Component: (A)MOP | Version: Keywords: | -----------------------+---------------------------------------------------- Changes (by mevenson): * priority: major => blocker * milestone: => 1.1.0 -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/277#comment:1> armedbear <http://common-lisp.net/project/armedbear> armedbear
![](https://secure.gravatar.com/avatar/bfc2df4941985c6757bb9cc05a33e95f.jpg?s=120&d=mm&r=g)
#277: reinitialize-instance on class metaobjects incorrect ------------------------+--------------------------------------------------- Reporter: rschlatte | Owner: rschlatte Type: defect | Status: closed Priority: blocker | Milestone: 1.1.0 Component: (A)MOP | Version: Resolution: fixed | Keywords: ------------------------+--------------------------------------------------- Changes (by rschlatte): * status: new => closed * resolution: => fixed Comment: (In [14293]) Don't clobber class objects when re-initializing. - Also remove double-initialization via shared-initialize + one of intialize-instance / reinitialize-instance. - Fixes #277 - Reported by Pascal Costanza -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/277#comment:2> armedbear <http://common-lisp.net/project/armedbear> armedbear
![](https://secure.gravatar.com/avatar/bfc2df4941985c6757bb9cc05a33e95f.jpg?s=120&d=mm&r=g)
#277: reinitialize-instance on class metaobjects incorrect ------------------------+--------------------------------------------------- Reporter: rschlatte | Owner: rschlatte Type: defect | Status: closed Priority: blocker | Milestone: 1.1.0 Component: (A)MOP | Version: Resolution: fixed | Keywords: ------------------------+--------------------------------------------------- Comment(by mevenson): (In [14294]) Backport r14293: Don't clobber class objects when re- initializing. - Also remove double-initialization via shared-initialize + one of intialize-instance / reinitialize-instance. - Fixes #277 - Reported by Pascal Costanza -- Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/277#comment:3> armedbear <http://common-lisp.net/project/armedbear> armedbear
participants (1)
-
armedbear