Subject: bug#49749: 26.3; 26.3 & 27.2: invalid byte compiler warning in short-circuited or form

From: Lars Ingebrigtsen <[email-masked]>
Date: Wed, 28 Jul 2021 17:26:24 +0200

Pierre Rouleau <[email-masked]> writes:

> (defun f-or ()
>   "Use or."
>   (when (or (null (boundp 'foo))
>             (null foo))  ;=> ``Warning: reference to free variable ‘foo’``                          
>     (message "foo is not set")))

The message about invalid stuff is only discarded if Emacs is trivially
able to deduce that it'll never be evaluated -- and as you've found out,
it's easy to make that heuristic not be heeded (see
`byte-compile-maybe-guarded' for details).

So I'm not sure this is a bug -- Emacs can't determine all cases where
we won't be executing the code in question at compile time.

Anybody else think that this is something that should be improved?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no