Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated

From: Madhu <[email-masked]>
Date: Tue, 10 Aug 2021 18:09:46 +0530

`emacs --daemon'
`emacsclient -t'  fails to start with a no matching method error

*ERROR*: No applicable method: frame-creation-function,
 ((vertical-scroll-bars) (height . 32) (width . 80) (client . #<process
 server <3>>) [...]  (window-system) (tty . "/dev/pts/3") (tty-type
 . "xterm-256color"))

The following patch might fix it, but it behaves strangely.  After the
fix (without recompiling the emacs binary) if I stick in a (load-library
"frame") in my .emacs, the method does not appear to be patched.  - I
have to use a graphical `emacsclient -n -c' and then compile/load
frame.el again.

diff --git a/lisp/frame.el b/lisp/frame.el
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -38,7 +38,7 @@ window-system
   ;; so just use it, and anyway `eql' isn't very useful on cons cells.
   `(window-system ,(if (consp value) value `(eql ',value))))
 
-(cl-defmethod frame-creation-function (params &context (window-system nil))
+(cl-defmethod frame-creation-function (params &context (window-system (eql 'nil)))
   ;; It's tempting to get rid of tty-create-frame-with-faces and turn it into
   ;; this method (i.e. move this method to faces.el), but faces.el is loaded
   ;; much earlier from loadup.el (before cl-generic and even before