(loadhist-unload-element): Move ERT and cl-generic methods
* lisp/loadhist.el (loadhist-unload-element): Don't define cl-generic and ert methods here. (loadhist-unload-element) <(head define-type)>: Remove unused var `slots'. * lisp/emacs-lisp/cl-generic.el (loadhist-unload-element): Define unload method for cl-defmethod. (cl-generic-ensure-function): Remove redundant `defalias'. * lisp/emacs-lisp/ert.el (ert-set-test): Move the current-load-list setting here... (ert-deftest): ...from here. (loadhist-unload-element): Define unload method for ert-deftest.
This commit is contained in:
parent
f07b12c1d0
commit
69fb12a66b
3 changed files with 24 additions and 15 deletions
|
@ -182,8 +182,7 @@ SPECIALIZERS-FUNCTION takes as first argument a tag value TAG
|
|||
origname))
|
||||
(if generic
|
||||
(cl-assert (eq name (cl--generic-name generic)))
|
||||
(setf (cl--generic name) (setq generic (cl--generic-make name)))
|
||||
(defalias name (cl--generic-make-function generic)))
|
||||
(setf (cl--generic name) (setq generic (cl--generic-make name))))
|
||||
generic))
|
||||
|
||||
;;;###autoload
|
||||
|
@ -1210,5 +1209,18 @@ Used internally for the (major-mode MODE) context specializers."
|
|||
(progn (cl-assert (null modes)) mode)
|
||||
`(derived-mode ,mode . ,modes))))
|
||||
|
||||
;;; Support for unloading.
|
||||
|
||||
(cl-defmethod loadhist-unload-element ((x (head cl-defmethod)))
|
||||
(pcase-let*
|
||||
((`(,name ,qualifiers . ,specializers) (cdr x))
|
||||
(generic (cl-generic-ensure-function name 'noerror)))
|
||||
(when generic
|
||||
(let* ((mt (cl--generic-method-table generic))
|
||||
(me (cl--generic-member-method specializers qualifiers mt)))
|
||||
(when me
|
||||
(setf (cl--generic-method-table generic) (delq (car me) mt)))))))
|
||||
|
||||
|
||||
(provide 'cl-generic)
|
||||
;;; cl-generic.el ends here
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue