From: Pascal C. <pc...@p-...> - 2006-07-17 20:51:30
|
Hi, Without further ado, here is a test program that fails with the support for anonymous classes recently added by Christophe. (use-package :sb-mop) (defclass my-class (standard-class) ()) (defmethod validate-superclass ((class my-class) (superclass standard- class)) t) (defvar *first-name* 'test) (defmethod initialize-instance :around ((class my-class) &rest initargs) (if *first-name* (prog1 (apply #'call-next-method class :name *first-name* initargs) (setf *first-name* nil)) (call-next-method))) (make-instance 'my-class :direct-superclasses (list (find-class 'standard-object))) (eval '(defmethod doit ((object test)) (print 42))) (eval '(doit (make-instance 'test))) Pascal -- Pascal Costanza, mailto:pc...@p-..., http://p-cos.net Vrije Universiteit Brussel, Programming Technology Lab Pleinlaan 2, B-1050 Brussel, Belgium |
From: Pascal C. <pc...@p-...> - 2006-07-18 09:53:31
|
Oh wait, probably a misunderstanding of mine. The :name parameter sets the class-name, and this only exists for debugging purposes. The actual mapping from class names to class objects is done via (setf find-class). (I only recently understood that class-name and find- class serve different purposes...) Pascal On 17 Jul 2006, at 22:51, Pascal Costanza wrote: > Hi, > > Without further ado, here is a test program that fails with the > support for anonymous classes recently added by Christophe. > > (use-package :sb-mop) > > (defclass my-class (standard-class) > ()) > > (defmethod validate-superclass ((class my-class) (superclass standard- > class)) > t) > > (defvar *first-name* 'test) > > (defmethod initialize-instance :around > ((class my-class) &rest initargs) > (if *first-name* > (prog1 > (apply #'call-next-method class :name *first-name* > initargs) > (setf *first-name* nil)) > (call-next-method))) > > (make-instance 'my-class :direct-superclasses (list (find-class > 'standard-object))) > > (eval '(defmethod doit ((object test)) > (print 42))) > > (eval '(doit (make-instance 'test))) > > > > > Pascal > > -- > Pascal Costanza, mailto:pc...@p-..., http://p-cos.net > Vrije Universiteit Brussel, Programming Technology Lab > Pleinlaan 2, B-1050 Brussel, Belgium > > > > > > ---------------------------------------------------------------------- > --- > Take Surveys. Earn Cash. Influence the Future of IT > Join SourceForge.net's Techsay panel and you'll get the chance to > share your > opinions on IT & business topics through brief surveys -- and earn > cash > http://www.techsay.com/default.php? > page=join.php&p=sourceforge&CID=DEVDEV > _______________________________________________ > Sbcl-devel mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-devel -- Pascal Costanza, mailto:pc...@p-..., http://p-cos.net Vrije Universiteit Brussel, Programming Technology Lab Pleinlaan 2, B-1050 Brussel, Belgium |
From: Pascal C. <pc...@p-...> - 2006-07-18 12:47:50
|
OK, but here is a different bug: * (defmethod test ((object #.(make-instance 'standard-class))) 42) debugger invoked on a SIMPLE-ERROR: There is no class named NIL. Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL. restarts (invokable by number or by possibly-abbreviated name): 0: [ABORT] Exit debugger, returning to top level. (SB-PCL::FIND-CLASS-FROM-CELL NIL NIL T) 0] 0 Pascal On 18 Jul 2006, at 11:53, Pascal Costanza wrote: > Oh wait, probably a misunderstanding of mine. The :name parameter > sets the class-name, and this only exists for debugging purposes. > The actual mapping from class names to class objects is done via > (setf find-class). (I only recently understood that class-name and > find-class serve different purposes...) > > Pascal > > On 17 Jul 2006, at 22:51, Pascal Costanza wrote: > >> Hi, >> >> Without further ado, here is a test program that fails with the >> support for anonymous classes recently added by Christophe. >> >> (use-package :sb-mop) >> >> (defclass my-class (standard-class) >> ()) >> >> (defmethod validate-superclass ((class my-class) (superclass >> standard- >> class)) >> t) >> >> (defvar *first-name* 'test) >> >> (defmethod initialize-instance :around >> ((class my-class) &rest initargs) >> (if *first-name* >> (prog1 >> (apply #'call-next-method class :name *first-name* >> initargs) >> (setf *first-name* nil)) >> (call-next-method))) >> >> (make-instance 'my-class :direct-superclasses (list (find-class >> 'standard-object))) >> >> (eval '(defmethod doit ((object test)) >> (print 42))) >> >> (eval '(doit (make-instance 'test))) >> >> >> >> >> Pascal >> >> -- >> Pascal Costanza, mailto:pc...@p-..., http://p-cos.net >> Vrije Universiteit Brussel, Programming Technology Lab >> Pleinlaan 2, B-1050 Brussel, Belgium >> >> >> >> >> >> --------------------------------------------------------------------- >> ---- >> Take Surveys. Earn Cash. Influence the Future of IT >> Join SourceForge.net's Techsay panel and you'll get the chance to >> share your >> opinions on IT & business topics through brief surveys -- and earn >> cash >> http://www.techsay.com/default.php? >> page=join.php&p=sourceforge&CID=DEVDEV >> _______________________________________________ >> Sbcl-devel mailing list >> Sbc...@li... >> https://lists.sourceforge.net/lists/listinfo/sbcl-devel > > -- > Pascal Costanza, mailto:pc...@p-..., http://p-cos.net > Vrije Universiteit Brussel, Programming Technology Lab > Pleinlaan 2, B-1050 Brussel, Belgium > > > > -- Pascal Costanza, mailto:pc...@p-..., http://p-cos.net Vrije Universiteit Brussel, Programming Technology Lab Pleinlaan 2, B-1050 Brussel, Belgium |