Subject: bug#28899: 26.0.90; describe-function on class contructor gives make-text-button: Unknown button type ‘cl-type-definition’

From: Noam Postavsky <[email-masked]>
Date: Thu, 19 Oct 2017 07:55:20 -0400

Severity: minor

emacs -Q
M-x toggle-debug-on-error
<f1> f chart

Debugger entered--Lisp error: (error "Unknown button type ‘cl-type-definition’")
  signal(error ("Unknown button type ‘cl-type-definition’"))
  error("Unknown button type `%s'" cl-type-definition)
  make-text-button(46 54 type cl-type-definition help-args (chart "/home/npostavs/src/emacs/emacs-26/lisp/emacs-lisp/chart.el" define-type))
  apply(make-text-button 46 54 (type cl-type-definition help-args (chart "/home/npostavs/src/emacs/emacs-26/lisp/emacs-lisp/chart.el" define-type)))
  insert-text-button("chart.el" type cl-type-definition help-args (chart "/home/npostavs/src/emacs/emacs-26/lisp/emacs-lisp/chart.el" define-type))
  help-insert-xref-button("chart.el" cl-type-definition chart "/home/npostavs/src/emacs/emacs-26/lisp/emacs-lisp/chart.el" define-type)
  eieio-help-constructor(chart)
  run-hook-with-args(eieio-help-constructor chart)
  describe-function-1(chart)
  describe-function(chart)
  funcall-interactively(describe-function chart)
  call-interactively(describe-function nil nil)
  command-execute(describe-function)

It doesn't happen in Emacs 25, because loading eieio loads cl-extra (via
bytecomp, refer [1: acc443ad03] and [2: b6a57fb80c]).

A simple way to fix is to add (require 'cl-extra) in
eieio-help-constructor.  What's really needed is a way of autoloading
button definitions.

[1: acc443ad03]: 2014-10-23 09:31:20 -0400
  * lisp/emacs-lisp/bytecomp.el: Require cl-extra. * lisp/emacs-lisp/cl-extra.el: Add missing provide.
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=acc443ad03bf46aa49c87bc93f2df836bedede94

[2: b6a57fb80c]: 2017-04-18 20:52:22 -0400
  Tweak bytecomp's loading of cl-extra
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=b6a57fb80c49bcd9163966d612671a5256f3a1a8