Subject: 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 16:10:57 -0700

Eric Abrahamsen <[email-masked]> writes:

> 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 :)

Looks like Emacs 27 still requires unquoted symbols:

(cl-defmethod testy ((_bob (eql 'list)))
  (message "bob's a list"))

(testy 'list) -> (cl-no-applicable-method testy list)