Subject: bug#51576: 27.2; Bad error message for `defface' with no doc string

From: Stefan Kangas <[email-masked]>
Date: Wed, 3 Nov 2021 15:29:44 -0700

tags 51576 + confirmed easy
found 51576 29.0.50
thanks

Drew Adams <[email-masked]> writes:

> emacs -Q
>
> Eval this:
>
> (defface foo '((t :background "gray70" :inherit region))
>   :group 'faces :type 'sexp)
>
> Instead of telling you the doc string is missing, the error message says
> this:
>
> Debugger entered--Lisp error: (error "Unknown keyword faces")
>   signal(error ("Unknown keyword faces"))
>   error("Unknown keyword %s" faces)
>   custom-handle-keyword(foo faces :type custom-face)
>   custom-handle-all-keywords(foo (faces :type sexp) custom-face)
>   custom-declare-face(foo ((t :background "gray70" :inherit region)) :group faces :type sexp)
>   eval-region(146 231 t #f(compiled-function (ignore) #<bytecode 0x2293dd9>))  ; Reading at buffer position 151
>   elisp--eval-defun()
>   eval-defun(nil)
>   funcall-interactively(eval-defun nil)
>   call-interactively(eval-defun nil nil)
>   command-execute(eval-defun)

I can reproduce this on current master.  I agree that it would be better
to say that the docstring is missing here.