diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index b062c280a41..722211d6ba8 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -429,6 +429,15 @@ cl-generic-define-context-rewriter (lexical-binding (cons 'curried `#'(lambda (,nm) ;Called when constructing the effective method. + ,@(let* ((prebody (car parsed-body)) + (ds (if (stringp (car prebody)) + prebody + (setq prebody (cons nil prebody)))) + (usage (help-split-fundoc (car ds) nil))) + (unless usage + (setcar ds (help-add-fundoc-usage (car ds) + args))) + prebody) (let ((,nmp (if (cl--generic-isnot-nnm-p ,nm) #'always #'ignore))) ;; This `(λ (&rest x) .. (apply (λ (args) ..) x))' @@ -446,15 +455,6 @@ cl-generic-define-context-rewriter ;; is always called directly and there are no ;; `&optional' args. (lambda (&rest ,arglist) - ,@(let* ((prebody (car parsed-body)) - (ds (if (stringp (car prebody)) - prebody - (setq prebody (cons nil prebody)))) - (usage (help-split-fundoc (car ds) nil))) - (unless usage - (setcar ds (help-add-fundoc-usage (car ds) - args))) - prebody) (let ((,cnm (lambda (&rest args) (apply ,nm (or args ,arglist))))) ;; This `apply+lambda' basically parses