--- Begin Message ---
Subject: |
Wrong warning position given by the byte compiler for a malformed function |
Date: |
Mon, 27 Nov 2023 12:40:49 +0000 |
Hello, Emacs
In any recent or semi-recent Emacs create a file bad-error-position.el
with these contents:
(defun foo ()
(let ((bar 'bar))
(if ("foo") ; Erroneous "function".
(baz))))))
.. Use M-x compile-defun to compile it. This gives an error message:
Buffer bad-error-position.el:2:4: Warning: `foo' is a malformed function
.. This position 2:4 is wrong; it is the position of the `let' symbol.
The correct position would be 3:6, the position of the `if' symbol.
#########################################################################
The cause of the error is in byte-optimize-form in
lisp/emacs-lisp/byte-opt.el. There, although the code recurses, it
fails to push the current form onto byte-compile-form-stack. Thus when
byte-compile-warn-x is called, there is nothing usable on that stack
inside the let form.
--
Alan Mackenzie (Nuremberg, Germany).
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#67483: Wrong warning position given by the byte compiler for a malformed function |
Date: |
Mon, 27 Nov 2023 15:47:47 +0000 |
Hello, Eli.
On Mon, Nov 27, 2023 at 17:09:10 +0200, Eli Zaretskii wrote:
> > Date: Mon, 27 Nov 2023 14:01:40 +0000
> > Cc: 67483@debbugs.gnu.org, acm@muc.de
> > From: Alan Mackenzie <acm@muc.de>
> > > > > Which branch? master or emacs-29?
> > > > Both. Probably emacs-28, too.
> > > So it isn't a "semi-recent" problem, is it?
> > It isn't ten years old, either. I have a fix ready to commit to the
> > master branch.
> > Seeing as how the bug isn't recently introduced, and isn't a critical
> > bug, I'm assuming the patch is not destined for the release branch.
> Definitely not.
No. I've committed the fix to master, and I'm closing the bug.
--
Alan Mackenzie (Nuremberg, Germany).
--- End Message ---