[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#67483: Wrong warning position given by the byte compiler for a malfo
From: |
Alan Mackenzie |
Subject: |
bug#67483: 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).
- bug#67483: Wrong warning position given by the byte compiler for a malformed function,
Alan Mackenzie <=
bug#67483: Wrong warning position given by the byte compiler for a malformed function, Mattias EngdegÄrd, 2023/11/30