While playing with ACL-COMPAT in GCL, I found that its ASDF file
relies on REMOVE-METHOD not signalling an error if the method to
remove does not belong to the generic function, as described in entry
201 of GCL's BUGS file.

This patch to CVS HEAD fixes the problem, and makes GCL pass all tests
in ansi-tests/remove-method.lsp.

Magnus
Index: BUGS
===================================================================
RCS file: /sources/gcl/gcl/BUGS,v
retrieving revision 1.27
diff -u -r1.27 BUGS
--- BUGS	13 Oct 2005 11:21:30 -0000	1.27
+++ BUGS	21 May 2006 01:21:16 -0000
@@ -954,7 +954,7 @@
      with other than one argument in safe code.
     ansi-tests: method-qualifiers.error.[12]
 
-201. remove-method must not signal an error if the method does not belong
+201. (FIXED) remove-method must not signal an error if the method does not belong
      to the generic function.
     ansi-tests: remove-method.1
 
Index: pcl/gcl_pcl_methods.lisp
===================================================================
RCS file: /sources/gcl/gcl/pcl/gcl_pcl_methods.lisp,v
retrieving revision 1.2
diff -u -r1.2 gcl_pcl_methods.lisp
--- pcl/gcl_pcl_methods.lisp	7 May 2005 02:52:30 -0000	1.2
+++ pcl/gcl_pcl_methods.lisp	21 May 2006 01:21:32 -0000
@@ -629,10 +629,7 @@
   
 (defun real-remove-method (generic-function method)
   (if  (neq generic-function (method-generic-function method))
-       (error "The method ~S is attached to the generic function~@
-               ~S.  It can't be removed from the generic function~@
-               to which it is not attached."
-	      method (method-generic-function method))
+       generic-function			;method not found - do nothing
        (let* ((name         (generic-function-name generic-function))
 	      (specializers (method-specializers method))
 	      (methods      (generic-function-methods generic-function))
_______________________________________________
Gcl-devel mailing list
Gcl-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/gcl-devel

Reply via email to