Subject: Invalid options for slot ...
From: Stefan Monnier <[email-masked]>
To: [email-masked]
Date: Sat, 31 Dec 2016 10:42:24 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Package: Emacs
Version: 25.1.50

The following commit:

    commit eb610f270ea919107b10bb8ece200a87abac6e0e
    Author: Johan Bockgård <[email-masked]>
    Date:   Tue Oct 18 22:28:17 2016 +0200
    
        cl-defstruct: Fix debug spec and check of slot options
        
        * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Improve checking of slot
        option syntax.  Fix debug spec.  (Bug#24700)

Is a bit too strict: it causes various packages (such as the GNU ELPA
packages `xpm`, `dbus-codegen`, and `gnorb`) to signal an error
during compilation.  This is typically because they use

    (cl-defstruct ...
      (slotname :read-only t)
      ...)

instead of

    (cl-defstruct ...
      (slotname nil :read-only t)
      ...)

We should fix those packages, but they worked just fine until now
despite this mistake, so we shouldn't break them gratuitously.  IOW the
error we signal should be changed to a warning, and it should be made
more clear, since I expect many coders won't understand what it means
(they'll look at their slot definition and will think "Huh?  I only use
the option :read-only, and that should be valid!").

        Stefan

In GNU Emacs 25.1.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.20.6)
 of 2016-08-07 built on alfajor
Repository revision: 1662ba23be7859f61e3617e323f3234c5f82507c
Windowing system distributor 'The X.Org Foundation', version 11.0.11804000
System Description:	Debian GNU/Linux testing (stretch)

Recent messages:
Warning: turn-on-eldoc-mode is obsolete!
Warning: hide-sublevels is obsolete!
Mark saved where search started
Reverting file ~/src/emacs/trunk/lisp/emacs-lisp/cl-macs.el...
Warning: turn-on-eldoc-mode is obsolete!
Warning: hide-sublevels is obsolete!
Reverting file ~/src/emacs/trunk/lisp/emacs-lisp/cl-macs.el...done
Mark saved where search started [2 times]
Undo!
Mark set [2 times]

Configured using:
 'configure -C --enable-checking --enable-check-lisp-object-type
 'CFLAGS=-Wall -g3 -Og -Wno-pointer-sign'
 PKG_CONFIG_PATH=/home/monnier/lib/pkgconfig'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LANG: fr_CH.UTF-8
  locale-coding-system: utf-8-unix

Major mode: InactiveMinibuffer

Minor modes in effect:
  dired-omit-mode: t
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  electric-pair-mode: t
  global-reveal-mode: t
  reveal-mode: t
  auto-insert-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  global-compact-docstrings-mode: t
  url-handler-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/monnier/src/emacs/elpa/packages/svg/svg hides /home/monnier/src/emacs/work/lisp/svg
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-mode hides /home/monnier/src/emacs/work/lisp/progmodes/ada-mode
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-stmt hides /home/monnier/src/emacs/work/lisp/progmodes/ada-stmt
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-prj hides /home/monnier/src/emacs/work/lisp/progmodes/ada-prj
/home/monnier/src/emacs/elpa/packages/ada-mode/ada-xref hides /home/monnier/src/emacs/work/lisp/progmodes/ada-xref
/home/monnier/src/emacs/elpa/packages/landmark/landmark hides /home/monnier/src/emacs/work/lisp/obsolete/landmark
/home/monnier/src/emacs/elpa/packages/crisp/crisp hides /home/monnier/src/emacs/work/lisp/obsolete/crisp

Features:
(mail-extr emacsbug bug-reference inline mh-e mh-compat mh-acros
mh-buffers mh-loaddefs mode-local dunnet dired-x tabify imenu man
ox-latex ox-icalendar ox-html ox-ascii ox-publish ox org-protocol
org-mouse org-mobile org-agenda org-indent org-feed org-crypt
org-capture org-attach org-id org-element org-rmail org-mhe org-irc
org-info org-gnus org-docview org-bibtex bibtex org-bbdb org-w3m org
org-macro org-footnote org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs battery typer-mode beancount ido conf-mode eieio-opt rect
thai-util thai-word package-x sh-script sort mpc quail log-view help-fns
radix-tree cal-french diary-lib diary-loaddefs cal-move cal-menu
calendar cal-loaddefs reftex-dcr reftex reftex-loaddefs reftex-vars
tex-mode latexenc bbdb-com bbdb timezone make-mode whitespace sm-c-mode
xscheme warnings unsafep trace testcover shadow scheme re-builder
profiler inf-lisp ielm ert pp find-func elp edebug cl-indent map
epa-file descr-text autorevert filenotify doc-view jka-compr image-mode
dabbrev ffap grep misearch multi-isearch shell pcomplete debug log-edit
message sendmail subr-x puny dired dired-loaddefs format-spec rfc822 mml
mml-sec epa derived epg gnus-util rmail rmail-loaddefs mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util
ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader
pcvs-util add-log executable copyright smerge-mode vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs vc-dir ewoc vc vc-dispatcher cus-edit cus-start
cus-load wid-edit vc-git diff-mode filecache caml tuareg_indent tuareg
speedbar sb-image ezimage dframe compile comint ansi-color ring smie
caml-help caml-types caml-emacs server time-date noutline outline
easy-mmode flyspell ispell checkdoc thingatpt load-dir elec-pair reveal
autoinsert proof-site proof-autoloads cl pg-vars savehist minibuf-eldef
disp-table compact-docstrings kotl-loaddefs advice info
realgud-recursive-autoloads finder-inf url-auth package epg-config
url-handlers url-parse auth-source eieio eieio-core cl-macs
eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp
byte-compile cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib
bbdb-loaddefs mule-util tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932
hebrew greek romanian slovak czech european ethiopic indian cyrillic
chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev
obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face
macroexp files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
dbusbind inotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 8 1307203 271855)
 (symbols 24 52524 2) (miscs 20 20865 2370) (strings 16 191631 26349)
 (string-bytes 1 5685348)
 (vectors 8 105800) (vector-slots 4 3443686 341944) (floats 8 766 1944)
 (intervals 28 200743 393)
 (buffers 520 149) (heap 1024 1428477 2044))