Subject: Re: bug#21185: 25.0.50; byte-compiler warn on quote lexical var

From: Lars Ingebrigtsen <[email-masked]>
Date: Thu, 08 Jul 2021 16:12:47 +0200

Stefan Monnier <[email-masked]> writes:

>> I've been bitten by this problem when converting code to use lexical
>> binding; it would be helpful if the byte-compiler warned about it.
>
> Agreed, but I haven't figured out how to make this work.
> There are two problems:
> 1- detect not just things like « 'var » but also things like « '(var1
>    var2 var3) » since such occur in a few places as well.
> 2- don't swamp the user with false positives.
>
> Problem 2 is by far the biggest.  It's very common to have a local
> variable `face' and at the same time to use the symbol `face' (quoted),
> for example.

So the suggestion is to have code like

(let ((foo "bar"))
  (when (zot 'foo)
     ...))

give a warning (in lexical code)?  That does sound useful, especially if
the `zot' here is `bound-and-true-p', which somebody was using in a
different bug report the other week.

But I think that Stefan is totally correct in 2) -- there will be so
many false positives that it won't be useful.  So I'm closing this bug
report.

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