0.8.15.5:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 1 Oct 2004 13:24:21 +0000 (13:24 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 1 Oct 2004 13:24:21 +0000 (13:24 +0000)
Fix for DEFGENERIC/FUNCTION/:METHOD interaction (Zach Beane
2004-09-29 sbcl-devel)

NEWS
src/pcl/boot.lisp
tests/clos.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 7c09acf..aa8b1eb 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,9 @@ changes in sbcl-0.8.16 relative to sbcl-0.8.15:
     redefinition of generic functions with no DEFGENERIC to an
     incompatible lambda list now signals an error.  (thanks to Zach
     Beane)
+  * bug fix: DEFGENERIC now works even when there's a function of the
+    same name in an enclosing lexical environment.  (thanks to Zach
+    Beane)
   * fixed some bugs revealed by Paul Dietz' test suite:
     ** POSITION on displaced vectors with non-zero displacement
        returns the right answer.
index c82b16d..1f7a23b 100644 (file)
@@ -165,7 +165,7 @@ bootstrapping.
                    (qualifiers (subseq qab 0 arglist-pos))
                    (body (nthcdr (1+ arglist-pos) qab)))
               `(push (defmethod ,fun-name ,@qualifiers ,arglist ,@body)
-                      (generic-function-initial-methods #',fun-name)))))
+                      (generic-function-initial-methods (fdefinition ',fun-name))))))
       (macrolet ((initarg (key) `(getf initargs ,key)))
        (dolist (option options)
          (let ((car-option (car option)))
index 94b3dc5..c0b4d5a 100644 (file)
                                         (defgeneric nonsense ())))))
         'generic-function))
 
+(assert
+ (typep (funcall (compile nil
+                          '(lambda () (flet ((nonsense-2 () nil))
+                                        (defgeneric nonsense-2 ()
+                                          (:method () t))))))
+        'generic-function))
+
+
 
 ;;;; success
 (sb-ext:quit :unix-status 104)
index 169c7d3..cf3bcc3 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.15.4"
+"0.8.15.5"