Subject: bug#67483: Wrong warning position given by the byte compiler for a malformed function

From: Mattias Engdegård <[email-masked]>
Date: Thu, 30 Nov 2023 11:37:31 +0100

>     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.

(Actually the correct position would be the position of the string literal but of course our location tracking system is too simplistic for that.)

Thank you for bringing this to our attention. Now I only saw this from the reference in your commit message; would you CC me next time? (Stefan, too, unless he objects.)

I'm modifying your work a bit because we're trying to remove warnings from the optimiser, not entrenching them there. The warning is now in cconv but perhaps it should be moved to macroexp-all, it's not very important. I hope being able to reshape the front-end a bit later on.

Also, we usually prefer let-binding dynamic variables to push-pop pairs.