title: Warning when byte compiling: the function 'whitespace-mode' might not be defined at runtime
body: <p>If I put the following in <code>foo.el</code>:</p>
  
  <pre><code>(defun whitespace-redraw ()
    (eval-when-compile (require 'whitespace nil t))
    (when (require 'whitespace nil t)
      (if whitespace-mode
          (whitespace-mode 0))
      (whitespace-mode 1)))
  </code></pre>
  
  <p>and then byte compile it:</p>
  
  <pre><code>emacs -Q --batch --eval '(byte-compile-file "foo.el")'
  </code></pre>
  
  <p>I get the following warning:</p>
  
  <pre><code>In end of data:
  foo.el:7:1:Warning: the function `whitespace-mode' might not be defined at
      runtime.
  Wrote foo.elc
  </code></pre>
  
  <p>Certainly <code>whitespace-mode</code> can be undefined at runtime, but it should never be executed unless whitespace loads successfully.  If whitespace loads, then <code>whitespace-mode</code> will be defined.</p>
  
  <p>Is this warning the result of an emacs compiler limitation or am I doing something wrong?</p>