Alex Harsanyi writes: > On Fri, Jun 8, 2018 at 10:18 PM, Thomas Fitzsimmons wrote: >> (CCing Alex Harsanyi.) >> >> Noam Postavsky writes: >> >>> Thomas Fitzsimmons writes: >>> >>>> Noam Postavsky writes: >>>> >>>>> Thomas Fitzsimmons 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. >>> > > The `(aref element 0)` trick is the only one that `soap-client` uses. All > other struct usage is via accessor functions, the rest of the code does not > assume they are vectors. It seems to me that `cl-old-struct-compat-mode` is > not needed. OK. > Thomas, will you prepare the patch for soap-client? How about the attached? I tested it in 26.1 with 25.1 excorporate.elc byte-code, as well as with our test suite against 24.1, 25.1 and 26.1, so it should be OK for GNU ELPA as well. If this looks OK, I'll bump the soap-client.el version to 3.1.4 when I push. Thomas