GNU bug report logs - #31742
26.1.50; excorporate.elc byte-compiled in Emacs 25.x fails in Emacs 26.1

Previous Next

Package: emacs;

Reported by: Thomas Fitzsimmons <fitzsim <at> fitzsim.org>

Date: Thu, 7 Jun 2018 01:08:02 UTC

Severity: normal

Found in version 26.1.50

Done: Thomas Fitzsimmons <fitzsim <at> fitzsim.org>

Bug is archived. No further changes may be made.

Full log


Message #35 received at 31742 <at> debbugs.gnu.org (full text, mbox):

From: Thomas Fitzsimmons <fitzsim <at> fitzsim.org>
To: Noam Postavsky <npostavs <at> gmail.com>
Cc: Alexandru Harsanyi <AlexHarsanyi <at> gmail.com>, 31742 <at> debbugs.gnu.org
Subject: Re: bug#31742: 26.1.50;
 excorporate.elc byte-compiled in Emacs 25.x fails in Emacs 26.1
Date: Fri, 08 Jun 2018 10:18:18 -0400
(CCing Alex Harsanyi.)

Noam Postavsky <npostavs <at> gmail.com> writes:

> Thomas Fitzsimmons <fitzsim <at> fitzsim.org> writes:
>
>> Noam Postavsky <npostavs <at> gmail.com> writes:
>>
>>> Thomas Fitzsimmons <fitzsim <at> fitzsim.org> writes:
>>>
>>>> (defun soap-resolve-references (element wsdl)
>>>
>>>>   (let ((resolver (get (aref element 0) 'soap-resolve-references)))
>>>
>>> Ah, then it should work to replace the (aref element 0) with (type-of
>>> element) as long as cl-old-struct-compat-mode is enabled.
>>
>> Yes, I retested with that change and it does work.  I guess I should
>> submit a patch to change all those occurrences in soap-client.
>
> I just noticed soap-client is also an ELPA package; then there is the
> additional complication that type-of will give the wrong answer in Emacs
> versions 25 and older.  So you would need something like
>
>     (let ((type (type-of element)))
>       (if (eq type 'vector)
>           (aref element 0) ; For Emacs 25 and earlier.
>         type))

OK, I had that on my list to investigate before patching soap-client,
the compatibility range of type-of, but you've done it for me, thanks.
A soap-type-of compatibility function probably makes sense to replace
the (aref ... 0) occurrences in soap-client and soap-inspect.

>> I'm hoping cl-old-struct-compat-mode will continue to be enabled by
>> default for a long time.
>
> I was going to say, it's currently not enabled by default, but it looks
> like it gets enabled automagically when you load code from the old
> cl-defstruct:
>
>     (defun cl-struct-define (name docstring parent type named slots children-sym
>                                   tag print)
>       (unless type
>         ;; Legacy defstruct, using tagged vectors.  Enable backward compatibility.
>         (cl-old-struct-compat-mode 1))

Ah, great, so that logic can stay in Emacs indefinitely without
negatively affecting sessions that don't load old byte-code.

Thomas




This bug report was last modified 7 years and 53 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.