Avoid generating invalid usage info for pathological function

Fixes: debbugs:19645

* lisp/help.el (help-make-usage): Don't turn a "_" arg into an empty-string.
* lisp/emacs-lisp/cl-generic.el (cl--generic-lambda): Don't confuse a string
body with a docstring.
This commit is contained in:
Stefan Monnier 2015-01-21 23:16:45 -05:00
parent 74244d239e
commit 938bca8e41
3 changed files with 11 additions and 3 deletions

View file

@ -228,7 +228,8 @@ This macro can only be used within the lexical scope of a cl-generic method."
"Make the lambda expression for a method with ARGS and BODY."
(let ((plain-args ())
(specializers nil)
(doc-string (if (stringp (car-safe body)) (pop body)))
(doc-string (if (and (stringp (car-safe body)) (cdr body))
(pop body)))
(mandatory t))
(dolist (arg args)
(push (pcase arg
@ -252,7 +253,7 @@ This macro can only be used within the lexical scope of a cl-generic method."
;; destructuring args, `declare' and whatnot).
(pcase (macroexpand fun macroenv)
(`#'(lambda ,args . ,body)
(let* ((doc-string (and doc-string (stringp (car body))
(let* ((doc-string (and doc-string (stringp (car body)) (cdr body)
(pop body)))
(cnm (make-symbol "cl--cnm"))
(nmp (make-symbol "cl--nmp"))