From a9a3d429e6e53e2be0b20e84f9809dba1d03e52d Mon Sep 17 00:00:00 2001
From: Stefan Monnier <monnier@iro.umontreal.ca>
Date: Mon, 26 Jan 2015 11:43:06 -0500
Subject: * lisp/emacs-lisp/cl-generic.el (cl--generic-method): New struct.

(cl--generic): The method-table is now a (list-of cl--generic-method).
(cl--generic-member-method): New function.
(cl-generic-define-method): Use it.
(cl--generic-build-combined-method, cl--generic-cache-miss):
Adapt to new method-table.
(cl--generic-no-next-method-function): Add `method' argument.
(cl-generic-call-method): Adapt to new method representation.
(cl--generic-cnm-sample, cl--generic-nnm-sample): Adjust.
(cl-find-method, cl-method-qualifiers): New functions.
(cl--generic-method-info): Adapt to new method representation.
Return a string for the qualifiers.
(cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class): Adjust accordingly.
(eieio-all-generic-functions, eieio-method-documentation):
Adjust to new method representation.

* lisp/emacs-lisp/eieio-compat.el (eieio--defmethod): Use cl-find-method.

* test/automated/cl-generic-tests.el: Try and make sure cl-lib is not
required at run-time.
---
 lisp/emacs-lisp/eieio-opt.el | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

(limited to 'lisp/emacs-lisp/eieio-opt.el')

diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el
index a131b02ee16..8d40edf5624 100644
--- a/lisp/emacs-lisp/eieio-opt.el
+++ b/lisp/emacs-lisp/eieio-opt.el
@@ -129,9 +129,9 @@ If CLASS is actually an object, then also display current values of that object.
         (insert "`")
         (help-insert-xref-button (symbol-name generic) 'help-function generic)
         (insert "'")
-	(pcase-dolist (`(,qualifier ,args ,doc)
+	(pcase-dolist (`(,qualifiers ,args ,doc)
                        (eieio-method-documentation generic class))
-          (insert (format " %S %S\n" qualifier args)
+          (insert (format " %s%S\n" qualifiers args)
                   (or doc "")))
 	(insert "\n\n")))))
 
@@ -325,10 +325,9 @@ methods for CLASS."
          (and generic
 	      (catch 'found
 		(if (null class) (throw 'found t))
-		(pcase-dolist (`((,specializers . ,_qualifier) . ,_)
-			       (cl--generic-method-table generic))
+		(dolist (method (cl--generic-method-table generic))
 		  (if (eieio--specializers-apply-to-class-p
-		       specializers class)
+		       (cl--generic-method-specializers method) class)
 		      (throw 'found t))))
 	      (push symbol l)))))
     l))
@@ -336,15 +335,14 @@ methods for CLASS."
 (defun eieio-method-documentation (generic class)
   "Return info for all methods of GENERIC applicable to CLASS.
 The value returned is a list of elements of the form
-\(QUALIFIER ARGS DOC)."
+\(QUALIFIERS ARGS DOC)."
   (let ((generic (cl--generic generic))
         (docs ()))
     (when generic
       (dolist (method (cl--generic-method-table generic))
-        (pcase-let ((`((,specializers . ,_qualifier) . ,_) method))
-          (when (eieio--specializers-apply-to-class-p
-                 specializers class)
-            (push (cl--generic-method-info method) docs)))))
+        (when (eieio--specializers-apply-to-class-p
+               (cl--generic-method-specializers method) class)
+          (push (cl--generic-method-info method) docs))))
     docs))
 
 ;;; METHOD STATS
-- 
cgit v1.2.3