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

From: Stefan Monnier <[email-masked]>
Date: Fri, 01 Sep 2023 19:24:56 -0400

> The problem seems to be the attempt to first match the spec
>
>   (&define [&name symbolp "@cl-flet@"]
>            [&name [] gensym] ;Make it unique!
>            def-form)])

I think this is not right:

- `def-form` is for use by forms which will be run "later", meaning that
  we can start executing those instrumented form while running
  non-instrumented code  (like the inside of a lambda), so it should not
  be needed here: we should use just `form`.

- The &define+&name isn't quite right here.  In `(cl-flet ((F EXP)) ...)`
  it tells Edebug that EXP should be given the name F whereas the `cl-flet`
  actually gives the name F to the value returned by EXP.
  [ In terms of code coverage, F will then always be considered as
    covered just because we have to execute EXP in order to discover the
    function to bind to F.  ]

I think that's why the old code had just `(symbolp form)`:
it's difficult with `(cl-flet ((F EXP)) ...)` to give a name to the
right thing :-(

        Stefan