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: Thu, 07 Jun 2018 10:06:03 -0400

Noam Postavsky <[email-masked]> writes:

> Thomas Fitzsimmons <[email-masked]> writes:
>
>> 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.
>
> Hmm, can't see anything else in the bytecode.  Can you post the full
> backtrace from the failure?

Yes, but the error that produces the backtrace happens much later
via a different entry point, M-x exco-calendar-show-day:

Debugger entered--Lisp error: (wrong-type-argument soap-binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding"))
  signal(wrong-type-argument (soap-binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding")))
  soap-find-operation(#s(soap-port :name "ExchangeServicePort" :namespace-tag nil :service-url "https://redacted/ews/exchange.asmx" :binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding")) "FindItem")
  soap-operation-arity(#s(soap-wsdl :origin "https://redacted/ews/exchange.asmx" :current-file nil :xmlschema-imports nil :ports (#s(soap-port :name "ExchangeServicePort" :namespace-tag nil :service-url "https://redacted/ews/exchange.asmx" :binding ("http://schemas.microsoft.com/exchange/services/2006/messages" . "ExchangeServiceBinding"))) :alias-table (("ns3" . "http://schemas.microsoft.com/exchange/services/2006/messages") ("ns2" . "http://schemas.microsoft.com/exchange/services/2006/types") ("ns1" . "urn:ExchangeServicePortType") ("soapenc" . "http://schemas.xmlsoap.org/soap/encoding/") ("xsd" . "http://www.w3.org/2001/XMLSchema")) :namespaces (#s(soap-namespace :name "urn:ExchangeServicePortType" :elements #<hash-table equal 294/325 0x9cf7109>) #s(soap-namespace :name "http://schemas.microsoft.com/exchange/services/2006/types" :elements #<hash-table equal 683/730 0x7b5ea85>) #s(soap-namespace :name "http://schemas.microsoft.com/exchange/services/2006/messages" :elements #<hash-table equal 745/1095 0x61383d9>) #s(soap-namespace :name "http://schemas.xmlsoap.org/soap/encoding/" :elements #<hash-table equal 33/65 0x6805be1>) #s(soap-namespace :name "http://www.w3.org/2001/XMLSchema" :elements #<hash-table equal 33/65 0x6eb5cfd>))) "ExchangeServicePort" "FindItem")
  exco-get-meetings-for-day(("[email-masked]" . "https://redacted/ews/exchange.asmx") 6 7 2018 #f(compiled-function (&rest arguments) #<bytecode 0x6b449ed>))
  #f(compiled-function (identifier callback) #<bytecode 0x6b44bfd>)(("[email-masked]" . "https://redacted/ews/exchange.asmx") #f(compiled-function (&rest arguments) #<bytecode 0x6b449ed>))
  exco-connection-iterate(exco-org-initialize-buffer #f(compiled-function (identifier callback) #<bytecode 0x6b44bfd>) exco-org-insert-meetings exco-org-finalize-buffer)
  exco-org-show-day(6 7 2018)
  apply(exco-org-show-day (6 7 2018))
  exco-calendar-show-day()
  funcall-interactively(exco-calendar-show-day)
  call-interactively(exco-calendar-show-day nil nil)
  command-execute(exco-calendar-show-day)

The initial problem in exco--bind-wsdl (via the M-x excorporate entry
point) does not throw an error.  Basically, in the failure case, parsing
of the WSDL XML is incomplete, and the later error is due to that.

I printed the value of port from 26.1; with 25.1 bytecode it is:

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

and with 26.1 bytecode it is:

#s(soap-port ExchangeServicePort nil https://mail.cisco.com/ews/exchange.asmx (http://schemas.microsoft.com/exchange/services/2006/messages . ExchangeServiceBinding))

Thomas