Subject: Re: bug#31742: 26.1.50; excorporate.elc byte-compiled in Emacs 25.x fails in Emacs 26.1

From: Thomas Fitzsimmons <[email-masked]>
Date: Wed, 06 Jun 2018 22:01:42 -0400

Noam Postavsky <[email-masked]> writes:

> Thomas Fitzsimmons <[email-masked]> writes:
>
>> soap-find-operation: Wrong type argument: soap-binding, ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding")
>
>> byte code for exco--bind-wsdl:
>>   doc:  Create a WSDL binding. ...
>>   args: (arg1 arg2 arg3 arg4 arg5)
>> 0	constant  soap-wsdl-find-namespace
>> 1	stack-ref 2
>> 2	stack-ref 6
>> 4	call	  2
>> 5	constant  vector
>> 6	constant  cl-struct-soap-port
>
>> byte code for exco--bind-wsdl:
>>   doc:  Create a WSDL binding. ...
>>   args: (arg1 arg2 arg3 arg4 arg5)
>> 0	constant  soap-wsdl-find-namespace
>> 1	stack-ref 2
>> 2	stack-ref 6
>> 4	call	  2
>> 5	constant  record
>> 6	constant  soap-port
>
> Looks like it's due to the change in how cl-struct works.  Does enabling
> cl-old-struct-compat-mode help?
>
>     cl-old-struct-compat-mode is an interactive autoloaded compiled Lisp
>     function in ‘cl-lib.el’.
>
>     (cl-old-struct-compat-mode &optional ARG)
>
>     Enable backward compatibility with old-style structs.
>     This can be needed when using code byte-compiled using the old
>     macro-expansion of ‘cl-defstruct’ that used vectors objects instead
>     of record objects.

Hmm, that does look related, however I just retried with and without it.
That mode was already enabled when the failure happened (when I ran M-x
cl-old-struct-compat-mode, it output "Cl-Old-Struct-Compat mode
disabled").

If I disable the mode, then I get a different failure earlier:

(wrong-type-argument soap-element [cl-struct-soap-port "ExchangeServicePort" nil "https://mail.cisco.com/ews/exchange.asmx" ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding")])

So it seems like cl-old-struct-compat-mode being enabled is having a
positive effect, but maybe it does not handle the specific
incompatibility I'm running into.

Thomas