summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/eieio-opt.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2015-01-26 11:43:06 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2015-01-26 11:43:06 -0500
commita9a3d429e6e53e2be0b20e84f9809dba1d03e52d (patch)
tree7a524468a14403d10d8a2eace08b803110447b7a /lisp/emacs-lisp/eieio-opt.el
parent4cdde9196fb4fafb00b0c51b908fd605274147bd (diff)
downloademacs-a9a3d429e6e53e2be0b20e84f9809dba1d03e52d.tar.gz
emacs-a9a3d429e6e53e2be0b20e84f9809dba1d03e52d.tar.bz2
emacs-a9a3d429e6e53e2be0b20e84f9809dba1d03e52d.zip
* 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.
Diffstat (limited to 'lisp/emacs-lisp/eieio-opt.el')
-rw-r--r--lisp/emacs-lisp/eieio-opt.el18
1 files changed, 8 insertions, 10 deletions
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