Subject: Re: bug#65344: 28.2; Unable to Edebug cl-flet form which uses argument destructuring

From: Gerd Möllmann <[email-masked]>
Date: Mon, 21 Aug 2023 09:01:35 +0200

BTW, after adding a test for this to test/emacs-lisp/cl-macs-tests.el,
I'm now a bit puzzled.  The test succeeds without my changes.

This is the new test case:

(ert-deftest cl-flet/edebug ()
  "Check that we can instrument `cl-flet' forms (bug#65344)."
  (with-temp-buffer
    (print '(cl-flet (;; "Obscure" form of binding supported by cl-flet
                      (x (progn (list 1 2) (lambda ())))
                      ;; Destructuring lambda-list
                      (y ((min max)) (list min max))
                      ;; Regular binding plus shadowing.
                      (z (a) a)
                      (z (a) a))
              (y '(1 2)))
           (current-buffer))
    (let ((edebug-all-defs t)
          (edebug-initial-mode 'Go-nonstop))
      ;; Just make sure the forms can be instrumented.
      (eval-buffer))))

Instrumenting the cl-flet of the test case interactively in "emacs -Q"
with C-M-x fails, as expected.  An interactive eval-buffer with
edebug-all-defs set to t succeeds.

So there's something else fishy somewhere, I'd guess, which is
unfortunate, because that pattern with eval-buffer is also used
elsewhere in cl-macs-tests.