From: Nikodemus S. <de...@us...> - 2004-06-29 12:43:07
|
Update of /cvsroot/sbcl/sbcl/src/pcl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7085/src/pcl Modified Files: std-class.lisp Log Message: 0.8.12.10: Fix bug 338: "MOP specializers as type specifiers" (reported by Bruno Haible sbcl-devel 2004-06-11) ... Adding a type translator in SHARED-INITIALIZE :AFTER does the trick. ... Test case. Index: std-class.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/pcl/std-class.lisp,v retrieving revision 1.62 retrieving revision 1.63 diff -u -d -r1.62 -r1.63 --- std-class.lisp 29 Jun 2004 08:51:01 -0000 1.62 +++ std-class.lisp 29 Jun 2004 12:42:56 -0000 1.63 @@ -279,7 +279,11 @@ (defmethod shared-initialize :after ((specl eql-specializer) slot-names &key) (declare (ignore slot-names)) - (setf (slot-value specl 'type) `(eql ,(specializer-object specl)))) + (setf (slot-value specl 'type) + `(eql ,(specializer-object specl))) + (setf (info :type :translator specl) + (constantly (make-member-type :members (list (specializer-object specl)))))) + (defun real-load-defclass (name metaclass-name supers slots other) (let ((res (apply #'ensure-class name :metaclass metaclass-name |