Subject: Spurious byte compile message: "Warning: the function `bar' might not be defined at runtime."

From: Alan Mackenzie <[email-masked]>
Date: Fri, 20 Nov 2015 10:44:19 +0000

Hello Emacs.

Using the latest from the emacs-25 branch:

This bug is a variant of bug #11918, which hasn't yet been resolved.

1. Create two Emacs Lisp source files, ~/warnings-bar.el and
~/warnings-foo.el with the following contents:

;;;;;;;; warnings-bar.el ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun bar ()
  "Doc string"
  "bar")

(provide 'warning-bar)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;; warnings-foo.el ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(eval-when-compile (require 'warning-bar))
(require 'warning-bar)

(defun foo ()
  (bar))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

2. (Optional) byte compile warnings-bar.el.
3. Byte compile warnings-foo.el with:
    emacs -Q -batch -L ~ -f batch-byte-compile warning-foo.el

.  This produces the spurious warning message:

    warning-foo.el:6:1:Warning: the function `bar' might not be defined
    at runtime.

.

N.B. if the `eval-when-compile' form is removed from warnings-foo.el, the
warning is not produced.

-- 
Alan Mackenzie (Nuremberg, Germany).