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

From: Alan Mackenzie <[email-masked]>
Date: Fri, 16 Sep 2016 13:33:52 +0000

Hello, Eli.

On Fri, Sep 16, 2016 at 04:22:08PM +0300, Eli Zaretskii wrote:
> > 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?

I'm looking at it now, with a view to making it work.

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

This is not a Good Thing.  Even its own comment describes itself as a
"gross hack".  Surely we can do better?

-- 
Alan Mackenzie (Nuremberg, Germany).