Subject: Re: bug#49866: 28.0.50; gnus-summary-exit from the transient search buffer giving error

From: Eric Abrahamsen <[email-masked]>
Date: Sat, 07 Aug 2021 15:56:12 -0700

On 08/07/21 10:56 AM, Pankaj Jangid wrote:
> Eric Abrahamsen <[email-masked]> writes:
>
>> On 08/06/21 19:14 PM, akater wrote:
>>> I was not aware of list-load-path-shadows but it doesn't show anything
>>> map-related.
>>
>> "make bootstrap" seems to have solved the problem for me. It's always
>> "make bootstrap"!!
>
> Now-a-days, I rely on complete cleanup. So I do,
>
> git checkout . && git pull && ./autogen.sh && ./configure && make -j8
>
> But this hasn’t solved the issue at my end.

Man, I have provided some really unhelpful suggestions in the course of
this thread. Turns out it wasn't "make bootstrap" (though that did
appear to work, just once), but in fact was some code in EBDB after all.
This method definition:

(cl-defmethod ebdb-records-cite ((_style (eql list))
				 (records list))
  (mapconcat (lambda (pair)
	       (format "%s <%s>"
		       ;; TODO: Wrap non-ASCII record names in double
		       ;; quotes?
		       (ebdb-string (car pair))
		       (ebdb-string (cdr pair))))
	     records "\n"))

uses the unquoted symbol 'list in the specializer, which I'd always
understood to be the normal way of doing it. Now that eql specializers
are evaluated, eval'ling the above definition apparently hoses all
methods specializing on (eql 'list) everywhere in Emacs, until they are
re-evaluated. I've got unquoted eql symbols all over the place in EBDB
and they work fine -- apparently only because in the other cases the
symbols don't clash with those used elsewhere.

This is a sneaky bug. Assuming that the quoted version of the
specializer is backward compatible with earlier code, I will of course
fix EBDB to use that. But NEWS says:

For compatibility, '(eql SYMBOL)' does not evaluate SYMBOL, for now.

Which kind of makes it sound like list should just be treated as 'list?
And the manual doesn't say anything about it at all. And does the same
change need to be to HEAD specializers?

In short, I still have questions :)

Eric