Ignore:
Timestamp:
06/15/17 05:38:38 (6 years ago)
Author:
Mark Evenson
Message:

Restart for when methods are defined over functions or macros, and when arglists don't match
(Alan Ruttenberg)

For those following along at home with the source code, you will
probably need to recompile your local FASLs after this change.

From <https://github.com/armedbear/abcl/pull/54/commits/7548151612417bb82ef3ee86a2d7670505b328bb>.

Merges <https://github.com/armedbear/abcl/pull/54>.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/clos.lisp

    r15003 r15085  
    21912191      (clrhash *reinitialize-instance-initargs-cache*))
    21922192    (if gf
    2193         (check-method-lambda-list name method-lambda-list
    2194                                   (generic-function-lambda-list gf))
     2193  (restart-case
     2194      (check-method-lambda-list name method-lambda-list
     2195              (generic-function-lambda-list gf))
     2196    (unbind-and-try-again () :report (lambda(s) (format s "Undefine generic function #'~a and continue" name))
     2197      (fmakunbound name)
     2198      (setf gf (ensure-generic-function name :lambda-list method-lambda-list))))
    21952199        (setf gf (ensure-generic-function name :lambda-list method-lambda-list)))
    21962200    (let ((method
     
    45504554                 (autoload-ref-p (second function-name))))
    45514555        (fmakunbound function-name)
    4552         (error 'program-error
    4553                :format-control "~A already names an ordinary function, macro, or special operator."
    4554                :format-arguments (list function-name))))
     4556  (progn
     4557    (cerror "Redefine as generic function" "~A already names an ordinary function, macro, or special operator." function-name)
     4558    (fmakunbound function-name)
     4559    )))
    45554560  (apply (if (eq generic-function-class +the-standard-generic-function-class+)
    45564561             #'make-instance-standard-generic-function
Note: See TracChangeset for help on using the changeset viewer.