* lisp/emacs-lisp/eieio*.el: Fix up warnings and improve compatibility
commit59e7fe6d0c6988687b53c279941c9ebb3f887eed
authorStefan Monnier <monnier@iro.umontreal.ca>
Wed, 21 Jan 2015 19:39:06 +0000 (21 14:39 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 21 Jan 2015 19:39:06 +0000 (21 14:39 -0500)
treeb5330cedb77c370aa00c5039a6c7c14fca6f5fe9
parent41efcf4db1589c2141ace6b9c3c15aa0386ecf95
* lisp/emacs-lisp/eieio*.el: Fix up warnings and improve compatibility

Fixes: debbugs:19645

* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Add support for `declare'.
(cl--generic-setf-rewrite): Setup the setf expander right away.
(cl-defmethod): Make sure the setf expander is setup before we expand
the body.
(cl-defmethod): Silence byte-compiler warnings.
(cl-generic-define-method): Shuffle code to change return value.
(cl--generic-method-info): New function, extracted from
cl--generic-describe.
(cl--generic-describe): Use it.

* lisp/emacs-lisp/eieio-speedbar.el:
* lisp/emacs-lisp/eieio-datadebug.el:
* lisp/emacs-lisp/eieio-custom.el:
* lisp/emacs-lisp/eieio-base.el: Use cl-defmethod.

* lisp/emacs-lisp/eieio-compat.el (eieio--defmethod): Avoid no-next-method
errors when there's a `before' but no `primary'.
(next-method-p): Return nil rather than signal an error.
(eieio-defgeneric): Remove bogus (fboundp 'method).

* lisp/emacs-lisp/eieio-opt.el: Adapt to cl-generic.
(eieio--specializers-apply-to-class-p): New function.
(eieio-all-generic-functions): Use it.
(eieio-method-documentation): Use it as well as cl--generic-method-info.
Change format of return value.
(eieio-help-class): Adapt accordingly.

* lisp/emacs-lisp/eieio.el: Use cl-defmethod.
(defclass): Generate cl-defmethod calls; use setf methods for :accessor.
(eieio-object-name-string): Declare as obsolete.

* test/automated/cl-generic-tests.el (setf cl--generic-2): Make sure
the setf can be used already in the body of the method.
12 files changed:
lisp/ChangeLog
lisp/emacs-lisp/cl-generic.el
lisp/emacs-lisp/eieio-base.el
lisp/emacs-lisp/eieio-compat.el
lisp/emacs-lisp/eieio-custom.el
lisp/emacs-lisp/eieio-datadebug.el
lisp/emacs-lisp/eieio-opt.el
lisp/emacs-lisp/eieio-speedbar.el
lisp/emacs-lisp/eieio.el
test/ChangeLog
test/automated/cl-generic-tests.el
test/automated/eieio-test-methodinvoke.el