Subject: Re: bug#48585: 28.0.50; Missing Edebug instrumentation for some 'if-let' variants

From: Stefan Monnier <[email-masked]>
Date: Sat, 16 Jul 2022 18:25:55 -0400

>> The 'symbolp' specification element causes Edebug to not instrument the
>> 'x' symbol.  However, the 'symbolp' specification is also necessary
>> here; we couldn't just replace it with 'form' because that would make
>> the branches overlap.  What we'd need here is something like
>> [&and symbolp form], i.e. match only in case of a symbol, but also
>> instrument as a form.  IIUC Edebug doesn't support such constructs yet.
>
> Perhaps Stefan has some comments here; added to the CCs.

The instrumentation takes place before expanding the macro, so either we
instrument the `x` into a form (edebug-<foo> ... x ...) or we leave the
`x` untouched and have no instrumentation.  We can't have it both ways
from that side.

So if we want the occurrence of `x` which *evaluates* `x` (as opposed to
the occurrence that *binds* the new variable) to be instrumented, we
need to change the macro to accept a "variable name" of the form
(edebug-<foo> ... x ...) and somehow strip the edebug instrumentation
when we use the argument as a variable name in a binding position.

As someone who doesn't much like `if-let`, I'll let someone else figure
out how to that somewhat cleanly.  Also to be honest I also wonder if
that would be worthwhile.

        Stefan