diff --git a/pcl/dfun.lisp b/pcl/dfun.lisp index 552b630e150ceef62534d95713e40f802a64baa7..84b1adea0009740ec1a816883749d096bb88fa19 100644 --- a/pcl/dfun.lisp +++ b/pcl/dfun.lisp @@ -25,7 +25,7 @@ ;;; ************************************************************************* (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/dfun.lisp,v 1.23 2003/04/13 16:39:22 gerd Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/dfun.lisp,v 1.24 2003/04/14 21:45:22 gerd Exp $") (in-package :pcl) @@ -1120,7 +1120,9 @@ And so, we are saved. (defvar *cmv-stack* ()) (defun cache-miss-values-internal (gf arg-info wrappers classes types state) - (if (and wrappers (equal wrappers (cdr (assq gf *cmv-stack*)))) + (if (and (eq state 'accessor) + wrappers + (equal wrappers (cdr (assq gf *cmv-stack*)))) (break-vicious-metacircle gf classes arg-info) (let ((*cmv-stack* (cons (cons gf wrappers) *cmv-stack*)) (cam-std-p (or (null arg-info) diff --git a/pcl/rt/defgeneric.lisp b/pcl/rt/defgeneric.lisp index 621e8df843fc3e19c34f95c6cdb3fa0bfbb70487..033982cb339b25e3ef71bbf5cb3c579b2b2b9433 100644 --- a/pcl/rt/defgeneric.lisp +++ b/pcl/rt/defgeneric.lisp @@ -28,7 +28,7 @@ ;;; DAMAGE. #+cmu -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/rt/defgeneric.lisp,v 1.3 2003/04/13 16:39:22 gerd Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/rt/defgeneric.lisp,v 1.4 2003/04/14 21:45:22 gerd Rel $") (in-package "PCL-TEST") @@ -70,6 +70,6 @@ (defgeneric method-class.0.gf (x) (:method-class method-class.0)) (defmethod method-class.0.gf ((x integer)) x) - t) + (method-class.0.gf 1)) (values r (null c))) - t t) + 1 t) diff --git a/pcl/rt/defmethod.lisp b/pcl/rt/defmethod.lisp index 34bc0a10515ea525f221a45380e660ac49a1dba7..857736b395f5ed343bf1fd43b578dd1ab2eeb0ac 100644 --- a/pcl/rt/defmethod.lisp +++ b/pcl/rt/defmethod.lisp @@ -28,7 +28,7 @@ ;;; DAMAGE. #+cmu -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/rt/defmethod.lisp,v 1.3 2003/04/06 09:34:39 gerd Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/rt/defmethod.lisp,v 1.4 2003/04/14 21:45:22 gerd Exp $") (in-package "PCL-TEST") @@ -101,3 +101,18 @@ t) (values r (null c))) t t) + +(deftest defmethod-metacircle.0 + (multiple-value-bind (r c) + (ignore-errors + (defclass dmm.0 () ()) + (defclass dmm.1 () ()) + (defclass dmm.0+1 (dmm.0 dmm.1) ()) + (defmethod dmm.0 ((x dmm.0) (y dmm.1)) 1) + (defmethod dmm.0 ((x dmm.1) (y dmm.0)) 2) + (dmm.0 (make-instance 'dmm.0+1) (make-instance 'dmm.0+1)) + (defmethod dmm.0 ((x dmm.0+1) (y dmm.0+1)) 3) + (dmm.0 (make-instance 'dmm.0+1) (make-instance 'dmm.0+1))) + (values r (null c))) + 3 t) + diff --git a/pcl/rt/pkg.lisp b/pcl/rt/pkg.lisp index 516544a94d9958ddf4327486a9a9b727a9310855..5433020bbd785568544505c82af9edec5d0163ca 100644 --- a/pcl/rt/pkg.lisp +++ b/pcl/rt/pkg.lisp @@ -28,13 +28,10 @@ ;;; DAMAGE. #+cmu -(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/rt/pkg.lisp,v 1.2 2003/03/22 16:15:14 gerd Exp $") +(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/rt/pkg.lisp,v 1.3 2003/04/14 21:45:22 gerd Rel $") (defpackage "PCL-TEST" - (:use "COMMON-LISP" #+cmu "PCL" #+sbcl "SB-PCL" "RT") - (:shadowing-import-from - #+cmu "PCL" #+sbcl "SB-PCL" - "FIND-CLASS" "CLASS-OF" "CLASS-NAME" "BUILT-IN-CLASS")) + (:use "COMMON-LISP" #+cmu "PCL" #+sbcl "SB-PCL" "RT")) #+sbcl (progn