Subject: bug#24449: Emacs 25.1 RC2: Byte compiler reports error in wrong place.

From: Eli Zaretskii <[email-masked]>
Date: Fri, 16 Sep 2016 16:22:08 +0300

> Date: Fri, 16 Sep 2016 11:31:25 +0000
> From: Alan Mackenzie <[email-masked]>
> 
>     $ emacs -Q -batch -f batch-byte-compile cc-engine.el
> 
> .  This outputs the following warning:
> 
>     In c-forward-decl-or-cast-1:
>     cc-engine.el:8105:22:Warning: reference to free variable `eq'
> 
> .  The use of `eq' on L8105 is entirely correct.  The error is at L8636,
> where the following appears:
> 
>     (and eq context nil
>          (match-beginning 1))
> 
> .  Clearly parentheses around the `eq' form are missing.
> 
> The compiler should have output its warning for L8636, not L8105.

Did you look at how the byte compiler determines the line number it
will include in the warning/error message?  If you didn't, you should,
because after you do, you will never again wonder why an incorrect
line number is reported.  In fact, now that I did look there, I'm
surprised it reports a correct line number at all, let alone as often
as it does.  It's sheer luck.