• Stefan Monnier's avatar
    * lisp/emacs-lisp/eieio*.el: Fix up warnings and improve compatibility · 59e7fe6d
    Stefan Monnier authored
    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.
    59e7fe6d
eieio-base.el 18.8 KB