MOP Bug
Hi, In my work on providing a MOP compatibility package - see http://common-lisp.net/project/closer/ - I have encountered the following bug in LispWorks (4.3 personal edition): In some cases, remove-direct-subclasses is not called when a class changes its direct superclasses. Here is an example: (use-package :clos) (defclass test-class (standard-class) ()) (defmethod validate-superclass ((class test-class) (superclass standard-class)) t) (defmethod remove-direct-subclass :after ((superclass test-class) (subclass test-class)) (format t "Direct subclass ~S removed from ~S.~%" subclass superclass)) (defclass test-super () () (:metaclass test-class)) (defclass test-sub1 (test-super) () (:metaclass test-class)) (defclass test-sub2 (test-super) () (:metaclass test-class)) (defclass test-sub1 () () (:metaclass test-class)) (reinitialize-instance (find-class 'test-sub2) :direct-superclasses (list (find-class 'standard-object))) This code results in the desired output for test-sub1 but not for test-sub2. Cheers, Pascal -- But do not try and hide the parens. That's impossible. Instead only try to realize the truth. There are no parens. - Tayssir John Gabbour