Subject: 26.0.50; Error when using Edebug on a function that uses :documentation

From: Gemini Lasswell <[email-masked]>
Date: Sun, 23 Oct 2016 08:28:22 -0700

Edebug gives an error when you try to debug any function which uses
:documentation to create its docstring. To reproduce:

1. Start Emacs (with -Q if you like) and enter the following code into *scratch*:

;;;  -*- lexical-binding: t -*-

(defun make-animal (species noise)
  (lambda ()
    (:documentation (format "I'm a %s." species))
    (message "%s" noise)))

(defalias 'kermit (make-animal "frog" "ribbit"))
(message "Kermit says %s" (documentation 'kermit t))
(kermit)

2. M-x edebug-all-defs RET
3. M-x eval-buffer RET
4. g

Result: "Kermit says nil" is written to Messages, and execution stops
with the error "Symbol’s function definition is void: :documentation".

This bug happens not only with lambda but also defun, defmacro,
defmethod, pcase-lambda, cl-defun, etc.

In GNU Emacs 26.0.50.10 (x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G1004))
 of 2016-10-22 built on rainbow.local
Repository revision: f577b8efec324afc80aa4308efbfa40dcce30bbf
Windowing system distributor 'Apple', version 10.3.1404
Recent messages:
Edebugging all definitions is on.
You can run the command ‘edebug-all-defs’ with M-x -defs RET
Edebugging all definitions is on.
Edebug: edebug-anon1358
Edebug: make-animal
Kermit says nil
Go...
Symbol's function definition is void: :documentation
Go...
edebug-signal: Symbol’s function definition is void: :documentation
Configured using:
 'configure --with-ns --disable-ns-self-contained'

Configured features:
JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS
NS

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

Major mode: Emacs-Lisp

Minor modes in effect:
  highlight-symbol-nav-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  diff-auto-refine-mode: t
  ivy-mode: t
  buffer-face-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  pyvenv-mode: t
  shell-dirtrack-mode: t
  nameless-mode: t
  beacon-mode: t
  rainbow-mode: t
  column-enforce-mode: t
  volatile-highlights-mode: t
  region-state-mode: t
  ws-butler-global-mode: t
  ws-butler-mode: t
  show-smartparens-global-mode: t
  show-smartparens-mode: t
  smartparens-global-mode: t
  smartparens-global-strict-mode: t
  smartparens-strict-mode: t
  smartparens-mode: t
  which-key-mode: t
  modalka-mode: t
  recentf-mode: t
  global-auto-revert-mode: t
  winner-mode: t
  display-time-mode: t
  savehist-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug highlight-symbol locate magit-blame
magit-stash magit-bisect magit-remote magit-commit magit-sequence magit
magit-apply magit-wip magit-log magit-diff smerge-mode magit-core
magit-autorevert magit-process magit-popup magit-mode magit-git crm
magit-section magit-utils git-commit log-edit message rfc822 mml mml-sec
epa derived epg gnus-util rmail rmail-loaddefs mailabbrev gmm-utils
mailheader pcvs-util with-editor async-bytecomp async server tabify
noutline outline dash-at-point undo-tree diff bug-reference add-log
expand-region text-mode-expansions python-el-fgallina-expansions
er-basic-expansions expand-region-core expand-region-custom ielm
eieio-tests eieio-opt speedbar sb-image ezimage dframe eieio-base ert pp
find-func ewoc debug eieio-compat edebug vc-git diff-mode colir flx
dired dired-loaddefs counsel esh-util swiper ivy delsel ffap face-remap
guess-style smtpmail sendmail mail-utils yasnippet highlight-indentation
flymake company help-fns radix-tree elpy pyvenv elpy-refactor
smartparens-python python tramp-sh tramp tramp-compat tramp-loaddefs
trampver shell pcomplete format-spec json map grep compile files-x
cus-edit virtualenvwrapper gud comint nameless lisp-mnt ace-window avy
beacon smex ido deft debbugs soap-client mm-decode mm-bodies mm-encode
warnings rng-xsd rng-dt rng-util xsd-regexp xml rainbow-mode ansi-color
color s hydra lv column-enforce-mode etags xref project
volatile-highlights region-state ws-butler smartparens-config
smartparens thingatpt dash which-key modalka quail
smart-mode-line-dark-theme smart-mode-line advice rich-minority
whiteboard-theme classic-theme recentf tree-widget wid-edit autorevert
filenotify winner ring time cus-start cus-load savehist cap-words
superword subword use-package diminish bind-key easy-mmode finder-inf
edmacro kmacro info network-stream starttls url-http tls gnutls
mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw
nsm subr-x puny url-cache url-auth url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util mailcap cl
package epg-config url-handlers url-parse auth-source cl-seq 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 time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win
ucs-normalize term/common-win 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 facemenu 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 kqueue cocoa ns multi-tty
make-network-process emacs)

Memory information:
((conses 16 785197 160038)
 (symbols 48 45770 0)
 (miscs 40 2961 2551)
 (strings 32 116734 150424)
 (string-bytes 1 3378243)
 (vectors 16 71418)
 (vector-slots 8 1235646 55579)
 (floats 8 1146 1541)
 (intervals 56 44259 4364)
 (buffers 976 38))