Subject: 26.0.50; Incorrect Edebug spec for cl-letf, cl-letf*
From: Gemini Lasswell <[email-masked]>
To: [email-masked]
Date: Sat, 22 Oct 2016 09:17:55 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

The Edebug spec for cl-letf and cl-letf* doesn't handle the place as
plain variable exception mentioned in the documentation of cl-letf.

To reproduce (emacs -Q or otherwise), enter this code into *scratch*:

(require 'cl-lib)
(defun my-letf-bug (things)
  (cl-letf* ((new-thing 'a)
	    ((car things) new-thing))
    (message "%s" things)))

(my-letf-bug (list 1 2 3))

If you evaluate this without the debugger it will give the expected
result, (a 2 3). But try:

M-x edebug-all-defs RET
M-x eval-buffer RET
g

Result: Symbol's value as variable is void: new-thing

In GNU Emacs 26.0.50.4 (x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G1004))
 of 2016-10-20 built on rainbow.local
Repository revision: 9e1e257ea8605354d15b4bd93e0af6188aae40db
Windowing system distributor 'Apple', version 10.3.1404
Recent messages:
Symbol’s value as variable is void: new-thing
funcall-interactively: End of buffer [4 times]
Entering debugger...
Back to top level
nil
Mark set
Edebug: my-letf-bug
Go...
Symbol's value as variable is void: new-thing
Go...
edebug-signal: Symbol’s value as variable is void: new-thing
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:
  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:
(iedit iedit-lib eww mm-url url-queue ibuf-ext ibuffer ibuffer-loaddefs
nnir htmlfontify cperl-mode-expansions cperl-mode htmlfontify-loaddefs
imap skeleton tramp-cache python-tests hideshow origami origami-parsers
rx company-capf seq-tests windmove calc calc-loaddefs calc-macs
electric-tests js-mode-expansions js html-mode-expansions
smartparens-html sgml-mode imenu cc-mode-expansions cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ruby-mode-expansions smartparens-ruby ruby-mode smie elec-pair ert-x
log-view vc vc-dispatcher org-element org-rmail org-mhe org-irc org-info
org-gnus org-docview doc-view image-mode org-bibtex bibtex org-bbdb
org-w3m the-org-mode-expansions org org-macro org-footnote org-pcomplete
org-list org-faces org-entities noutline outline 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 cal-menu
calendar cal-loaddefs shr-color linum 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 magit-section magit-utils
git-commit log-edit pcvs-util with-editor async-bytecomp async server
mailalias goto-chg shadow emacsbug cl-generic-tests testcover flow-fill
jka-compr shr svg dom browse-url qp nndraft nnmh nnfolder utf-7 epa-file
sort smiley gnus-cite mail-extr gnus-async gnus-bcklg gnus-agent
gnus-srvr gnus-score score-mode nnvirtual nntp gnus-ml gnus-msg
disp-table nndoc gnus-cache gnus-dup gnus-art mm-uu mml2015 mm-view
mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-cloud
nnimap nnmail mail-source utf7 netrc nnoo parse-time gnus-spec gnus-int
gnus-range gnus-win gnus nnheader mm-archive message rfc822 mml mml-sec
epa derived epg gnus-util rmail rmail-loaddefs mailabbrev gmm-utils
mailheader crm debbugs-gnu add-log zoom-window highlight-symbol
undo-tree diff eieio-opt speedbar sb-image ezimage dframe tabify
shrink-whitespace dash-at-point visual-regexp expand-region
text-mode-expansions python-el-fgallina-expansions er-basic-expansions
expand-region-core expand-region-custom ielm comment-dwim-2 ert
find-func ewoc debug pp 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 2211048 311623)
 (symbols 48 70123 2418)
 (miscs 40 9605 9204)
 (strings 32 256984 60642)
 (string-bytes 1 8351585)
 (vectors 16 108871)
 (vector-slots 8 2569018 156869)
 (floats 8 6151 2927)
 (intervals 56 214486 9776)
 (buffers 976 131))