Subject: bug#61579: master branch: Byte compilation: Warning messages inside eval-and-compile lose their positions.

From: Alan Mackenzie <[email-masked]>
Date: Fri, 17 Feb 2023 17:08:56 +0000

Hello, Emacs.

In buffer *scratch*, enter the following:

(eval-and-compile
  (defvar foo "foo")
  (make-variable-buffer-local 'foo))

..  With point inside that form, do M-x compile-defun.  This causes these
warnings in *Compile-Log*:

  Buffer *scratch*:4:2: Warning: global/dynamic var `foo' lacks a prefix
  Buffer *scratch*:4:2: Warning: `make-variable-buffer-local' not called at
          toplevel

..  The position 4:2 is the position of eval-and-compile, not the correct
positions of the two warning messages.  This is a bug.

[Side note: When eval-and-compile is replaced by eval-when-compile,
correct warning positions are generated thus:

  Buffer *scratch*:5:11: Warning: global/dynamic var `foo' lacks a prefix
  Buffer *scratch*:6:4: Warning: `make-variable-buffer-local' not called at
          toplevel

..]

-- 
Alan Mackenzie (Nuremberg, Germany).