Subject: Re: bug#25556: 26.0.50.1; Requiring uncompiled eieio issues obsoletion warnings

From: David Engster <[email-masked]>
Date: Sun, 29 Jan 2017 22:23:34 +0100

'npostavs' writes:
> David Engster <[email-masked]> writes:
>
>>>
>>> I'm not sure about `eieio-object-name-string', but the message about
>>> `destructor' is because cl-defgeneric makes the declaration handling
>>> code run before the function defining code, so the symbol is declared
>>> obsolete before it's defined and the definition itself triggers the
>>> obsolete warning.  The patch below moves it around and stops the
>>> `destructor' warning:
>>
>> Thanks for looking into to it, your patch works fine for me. Can this be
>> applied?
>
> I pushed to master [1: 9bf9463].
>
> 1: 2017-01-29 11:16:06 -0500 9bf94639b8f674d2c7894df35f26f09d0ecc67f5
>   Don't warn about obsolete defgenerics when defining them

Thanks!

Regarding eieio-object-name-string, the issue is indeed that it is first
defined via cl-defgeneric with an obsolete declaration, which in turn
means that any (uncompiled) cl-defmethod will issue an obsoletion
warning (so in this case twice: for eieio and eieio-named in
eieio-base.el).

So couldn't we just simply remove the cl-defgeneric for
eieio-object-name-string, and use make-obsolete instead?

Stefan, what do you think?

-David