Thank you Pascal for pointing this out, but I don't think this relates to my problem. I have looked at MKCL source and it was evident that it does not implement superclass validation at this time. Its MOP is not supported either in Closer-MOP so I assume it is somewhat young. Quoting for clos/standard.lsp: ;; FIXME!!! Here should come the invocation of VALIDATE-SUPERCLASS! As I have played with various CLs I noted that some required VALIDATE-SUPERCLASS and some did not. I have not really checked what is the standard's stance on this. I can trace the error rising from defclass to standard.lsp in mkcl. It is the cond clause from ensure-class-using-class. I display some more information to post here. ((not (eq (class-of class) metaclass)) (format *error-output* "class: ~A~%" class) (format *error-output* "(class-of class): ~A~%" (class-of class)) (format *error-output* "metaclass: ~A~%" metaclass) (error "When redefining a class, the metaclass can not change."))) Which provides this output class: &<The A-CLASS A 140012460512096> (class-of class): &<The STANDARD-CLASS A-CLASS 140012464325568> metaclass: &<The STANDARD-CLASS A-CLASS 140012460537344> Error during command line arguments processing: When redefining a class, the metaclass can not change.. This does show that A-CLASS is intanciated twice, and it is why the EQ test fails. The mystery is why there happen two instanciations when I use ASDF.
---------------------------------------- > To: asdf-devel@common-lisp.net > From: p...@informatimago.com > Date: Thu, 4 Dec 2014 11:26:50 +0100 > Subject: Re: [Asdf-devel] Program with metaclass on MKCL. > > "D. Martinez" <denis.marti...@live.com> writes: > >> Hello. Being new to "serious" CL programming I am hitting a brick wall right >> now in one CLOS project. >> After some time of infructuous searching I cannot find the source of >> my problem, which may be of either MKCL or ASDF but I lack the >> knowledge to debug this. Mr. JCB, who I have seen active on this list, >> may (hopefully!) be able to shed some light on the issue. >> >> The bug I encounter happens when I load the project by the means of >> ASDF. I can not reproduce it otherwise. >> It is triggered by a use of a custom metaclass, and it suggests that a >> file is loaded more times than it should. >> >> I have narrowed down the problem to a small program, so here it is: >> >> ;;;; hello.asd >> (asdf:defsystem &:hello >> :description "Describe hello here" >> :author "Your Name <your.n...@example.com>" >> :license "Specify license here" >> :serial t >> :components ((:file "package") >> (:file "a")) >> :depends-on ()) >> >> ;;;; package.lisp >> (defpackage &:hello >> (:use &:cl)) >> >> ;;;; a.lisp >> (in-package &:hello) >> (defclass A-class (standard-class) >> ()) >> (defclass A (standard-object) >> () (:metaclass A-class)) > > > AFAIK, you need to define a validate-superclass method when you define a > new metaclass: > > > ---- a.lisp ------------------------------------------------------------ > (in-package &:hello) > (defclass A-class (standard-class) > ()) > (defmethod validate-superclass ((class A-class) (super standard-class)) > t) > (defclass A (standard-object) > () > (:metaclass A-class)) > ---- hello.asd --------------------------------------------------------- > (asdf:defsystem &:hello > :description "Describe hello here" > :author "Your Name <your.n...@example.com>" > :license "Specify license here" > :serial t > :components ((:file "package") > (:file "a")) > :depends-on ("closer-mop")) > ---- package.lisp ------------------------------------------------------ > (defpackage &:hello > (:use &:cl) > (:import-from &:closer-mop &:validate-superclass)) > ------------------------------------------------------------------------ > > >> I will happily provide more specific info at request. The bug occured >> on MKCL 1.1.9 and 1.1.10 git with bundled ASDF. > > I tested it with ccl. > > -- > __Pascal Bourguignon__ http://www.informatimago.com/ > “The factory of the future will have only two employees, a man and a > dog. The man will be there to feed the dog. The dog will be there to > keep the man from touching the equipment.” -- Carl Bass CEO Autodesk > > > _______________________________________________ > Asdf-devel mailing list > Asdf-devel@common-lisp.net > http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel _______________________________________________ Asdf-devel mailing list Asdf-devel@common-lisp.net http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel