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