GNU bug report logs - #48585
28.0.50; Missing Edebug instrumentation for some 'if-let' variants

Previous Next

Package: emacs;

Reported by: Philipp <p.stephani2 <at> gmail.com>

Date: Sat, 22 May 2021 11:38:02 UTC

Severity: normal

Found in version 28.0.50

Full log


View this message in rfc822 format

From: Michael Heerdegen <michael_heerdegen <at> web.de>
To: Philipp <p.stephani2 <at> gmail.com>
Cc: 48585 <at> debbugs.gnu.org
Subject: bug#48585: 28.0.50; Missing Edebug instrumentation for some 'if-let' variants
Date: Sat, 16 Jul 2022 01:15:06 +0200
Philipp <p.stephani2 <at> gmail.com> writes:

> Instrument the following definition using C-u C-M-x:
> (defun f (x) (if-let* (x) 1))
>
> Then, evaluate this form:
> (f 2)
>
> Edebug will step into 'f', but won't stop at 'x'.
>
> The problem lies in this part of the Edebug specification for 'if-let*':
>
> [&or symbolp (symbolp form) (form)]
>
> 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.

Dunno how bad an overlap is.  I tried this:

(debug ((&rest [&or (symbolp form) (form) form])
                   body))

That lets instrumenting error:

| internal-macroexpand-for-load: Eager macro-expansion failure: (error
| "`let' bindings can have only one value-form" edebug-after 0 1 x)

Does that happen because `x` appears as binding _variable_ in the
expansion, and Ebebug messes with that?  Then we would have a second
problem.

Michael.




This bug report was last modified 3 years and 64 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.