Fixed the CALL-NEXT-METHOD closure.

This commit is contained in:
Juan Jose Garcia Ripoll 2010-02-16 21:52:07 +01:00
parent 8d7c9adbf3
commit ba3efd844f

View file

@ -103,17 +103,16 @@
(when in-closure-p
(setf plist '(:needs-next-method-p FUNCTION))
(setf real-body
`((let* ((.combined-method-args.
(locally (declare (special .combined-method-args.))
(if (listp .combined-method-args.)
.combined-method-args.
(apply #'list .combined-method-args.))))
`((let* ((.closed-combined-method-args.
(if (listp .combined-method-args.)
.combined-method-args.
(apply #'list .combined-method-args.)))
(.next-methods. *next-methods*))
(flet ((call-next-method (&rest args)
(unless .next-methods.
(error "No next method"))
(funcall (car .next-methods.)
(or args .combined-method-args.)
(or args .closed-combined-method-args.)
(rest .next-methods.)))
(next-method-p ()
.next-methods.))