Subject: bug#5950: defvaralias after defvar should be warned in runtime

From: Noam Postavsky <[email-masked]>
Date: Fri, 3 Aug 2018 16:23:22 -0400

On 2 August 2018 at 23:33, Clément Pit-Claudel <[email-masked]> wrote:
> On 2018-08-02 13:03, Stefan Monnier wrote:
>>>> The typical failure case goes like this, user does this:
>>>>
>>>> (setq the-package-setting 'foo)
>>>> (require 'the-package)
>>>>
>>>> And the-package.el does this:
>>>>
>>>> (defvar the-package-real-setting 'bar)
>>>> ;; Oops! User's setting of `foo' is overwritten here:
>>>> (defvaralias 'the-package-setting 'the-package-real-setting)
>>>
>>> Thanks.  Should the warning be disabled when both variables are
>>> already `defvar'd, then?
>>
>> Why?  Replace `setq` with `defvar` in the above scenario and you have
>> the same problem.
>
> Do you? I thought the problem was that you were overwriting a user setting… if you change the first setq into a defvar, where's the user setting that you're overwriting?

If the user writes defvar instead of setq, it has the exact same
effect: they've set the-package-setting to foo, which will be
overwritten to bar, same as before.