* lisp/emacs-lisp/cl-extra.el (cl--describe-class-slots): Fix
printing defclass slots, and retain printing of defstruct slots
(bug#30998 and bug#46662).
(list (cl-prin1-to-string (cl--slot-descriptor-name slot))
(cl-prin1-to-string (cl--slot-descriptor-type slot))
(cl-prin1-to-string (cl--slot-descriptor-initform slot))
- (let ((doc (plist-get (cl--slot-descriptor-props slot)
- :documentation)))
+ (let ((doc
+ ;; The props are an alist in a `defclass',
+ ;; but a plist when describing a `cl-defstruct'.
+ (if (consp (car (cl--slot-descriptor-props slot)))
+ (alist-get :documentation
+ (cl--slot-descriptor-props slot))
+ (plist-get (cl--slot-descriptor-props slot)
+ :documentation))))
(if (not doc) ""
(setq has-doc t)
(substitute-command-keys doc)))))