From unknown Sat Jun 21 10:25:15 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#47327 <47327@debbugs.gnu.org> To: bug#47327 <47327@debbugs.gnu.org> Subject: Status: 28.0.50; (cl-generic) eql specializer not evaluated Reply-To: bug#47327 <47327@debbugs.gnu.org> Date: Sat, 21 Jun 2025 17:25:15 +0000 retitle 47327 28.0.50; (cl-generic) eql specializer not evaluated reassign 47327 emacs submitter 47327 akater severity 47327 normal tag 47327 fixed thanks From debbugs-submit-bounces@debbugs.gnu.org Mon Mar 22 13:19:23 2021 Received: (at submit) by debbugs.gnu.org; 22 Mar 2021 17:19:24 +0000 Received: from localhost ([127.0.0.1]:58453 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOOD5-0008K3-KA for submit@debbugs.gnu.org; Mon, 22 Mar 2021 13:19:23 -0400 Received: from lists.gnu.org ([209.51.188.17]:36310) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOOD4-0008Jv-85 for submit@debbugs.gnu.org; Mon, 22 Mar 2021 13:19:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:40664) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lOOD2-0000WQ-H8 for bug-gnu-emacs@gnu.org; Mon, 22 Mar 2021 13:19:21 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]:43560) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lOOCz-0001EQ-8D for bug-gnu-emacs@gnu.org; Mon, 22 Mar 2021 13:19:19 -0400 Received: by mail-wm1-x334.google.com with SMTP id u5-20020a7bcb050000b029010e9316b9d5so9409529wmj.2 for ; Mon, 22 Mar 2021 10:19:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=QX9O9d806G+bEwZbLA1VJKBVggN0R4xHpqXK7r6h5VE=; b=JccaBoRa4ELoqPxZXl4oSlrT7ODb8klzJc1jUzt76rdVqqTU6TOU14mZ1tmfXzJS8O Yjy/JljJbmK7EpSxXvOlgWmGeBk+N40yEkrlX8Z4AzQZoQBvm7n3JHbRaovE6NjC3crT 2P6FFLf3KFyiicxfmuAUfnzNC79Q/zyKzbjoBY+8idczSZgB7/yL5Dso8Gk5IT3PMT0G ZdVTlii72X5TH+aZzd94rTh4aXnjgxJZlgg3Fs5UQQY6jGtOlrXbqehrVXz1JxHlCfpV BUabn5uVa4fw2PnFmTVFQ94+msEnT76HCBBPOOooCXb+8ofrlySZy4ewdRfd9kANh7wY NxSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=QX9O9d806G+bEwZbLA1VJKBVggN0R4xHpqXK7r6h5VE=; b=EBoB7K6dZskshEuzUwnNywOHHtmLDXbgrfIFgmAp/kOAEkpFTvWBv59EyYdnZnJ8jl 2cbPG/H3NpsXQH6RuwoNI+BtaPwkyEOCjD/HjKR0JLqbPFOKLWvbVdw5qS2OIQUBV5sk 0M90RG/8L2zS+3mLihhvTfXOrsbGwe1bWkXrkxRgF9s86yTSSOi+uemot5an+kRP7Ay/ um9km3p+bra/8YOvarJL/FlR8uUZwla4TaooYpNMisxM56Eic1OOfUd5TLbCNwQmRPhl AOsJfpa/sWl/WouZcDINWjuRyR4xo6zuaeNdCRx1ddIWQSnivdJy1WZ1kw2zXloF3yQv FXxg== X-Gm-Message-State: AOAM5309mRzI+G3Xs5A9A611zo98TsrcWHa6QXHPqGab6kV/8v8j/7tL W5zql6Fw/6IS+fDWRgOpVF5yITyXeQyinQ== X-Google-Smtp-Source: ABdhPJwvYMHUUOf5flFbfLyvDkdFCYgTa9vPT9dyBcY/QihAuJ7BLyxAnuhzGi12ZgfJCgnz2EBw6g== X-Received: by 2002:a05:600c:22cd:: with SMTP id 13mr105847wmg.90.1616433554888; Mon, 22 Mar 2021 10:19:14 -0700 (PDT) Received: from localhost (tor-exit-relay-7.anonymizing-proxy.digitalcourage.de. [185.220.102.253]) by smtp.googlemail.com with ESMTPSA id g16sm21702738wrs.76.2021.03.22.10.19.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Mar 2021 10:19:14 -0700 (PDT) From: akater To: bug-gnu-emacs@gnu.org Subject: 28.0.50; (cl-generic) eql specializer not evaluated Date: Mon, 22 Mar 2021 17:08:09 +0000 Message-ID: <87k0pz5d6u.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Received-SPF: pass client-ip=2a00:1450:4864:20::334; envelope-from=nuclearspace@gmail.com; helo=mail-wm1-x334.google.com X-Spam_score_int: -7 X-Spam_score: -0.8 X-Spam_bar: / X-Spam_report: (-0.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_BL_SPAMCOP_NET=1.347, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.1 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.1 (-) --=-=-= Content-Type: text/plain In ~(eql VAL)~ specializer, ~VAL~ should evaluate during evaluation of the macroexpanded ~cl-defmethod~ form. For some reason =cl-generic.el= does not do that (it does not evaluate the specializer form at all). Here's a hack fix that seems to work for me but I do not have a deep enough understanding of ~cl-generic~ to actually suggest it: #+begin_src emacs-lisp :results none (cl-defmethod cl-generic-generalizers ((specializer (head cl:eql))) "Support for (eql VAL) specializers. These match if the argument is `eql' to VAL." (let ((value (eval (cadr specializer) t))) (setf (car specializer) 'eql) (puthash value specializer cl--generic-eql-used)) (list cl--generic-eql-generalizer)) #+end_src Rationale: (1) See Common Lisp HyperSpec: #+begin_quote The parameter specializer name ~(eql eql-specializer-form)~ indicates that the corresponding argument must be eql to the object that is the value of ~eql-specializer-form~ for the method to be applicable. The ~eql-specializer-form~ is evaluated at the time that the expansion of the defmethod macro is evaluated. #+end_quote --- [[http://www.lispworks.com/documentation/HyperSpec/Body/m_defmet.htm][Macro DEFMETHOD]] (2) With eql specializer form not evaluated it does not seem possible to e.g. use a custom method combination, even though ~cl-generic~ informs that it is possible. The only way I can think of, is specializing ~cl-generic-combine-methods~ on the particular generic function: #+begin_src emacs-lisp :results none :eval never (cl-defmethod cl-generic-combine-methods ((generic (cl:eql (cl--generic 'my-generic-function))) methods) "Use `my-method-combination' method for generic function `my-generic-function'." (my-method-combination generic methods)) #+end_src which is impossible if the specializer form is not evaluated. (3) With eql specializer form not evaluated, it is only possible to dispatch on eql numbers or eql symbols which is needlessly limited. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJLBAEBCgA1FiEEgu5SJRdnQOF34djNsr6xYbHsf0QFAmBYzvkXHG51Y2xlYXJz cGFjZUBnbWFpbC5jb20ACgkQsr6xYbHsf0SYBhAAu+NeuL2Asu7Sz2QFjlZ/ap0z I3jC8XfWH0u6tl3iur0q+5p8lBXHFShCllCGHphUdA2BW7/Ge0vNYhPbkWVGcSY6 KxV5G/kPsj7HyXoIrBplN9kBrUlLKnRty/0ffGvr7LCI3YstuLDoZNyVQw+g20uO hfqNGA/WzZCwBfVrUYZncq0owLZKfk6hiN3o0lKOyoU+jLNWem8xSZ0UezrNa1Ta /zCl2tLac/lJWRFgfwHm0Q5r01HzVu1vLsOkj/kose05aqs6AHn2f5ekM2RpT6lY cdsC6c/m1CjZ6o2RjIJw8RjPqfx4v1ZSeqZr21KAhIP/z2K2nUYfO90vFdXFh05C eIS1YR2rnMV2A/yxtBbIS+lo5W1PdkO7C18bhm2LF1xiy9e6mv9BJdatT8pY2F3B wLwDrHMja1KdUI0lO1Q+wKFpQR+ugo6El+tXRzzGNd9gF/xlZvp5/kjc8aqB0XRU zhsRHPQjRjpnjZBALyTphGP1ppxvyvU/j83FR1b7Hcy73hX/+sNf6S2Cc3ryplIZ 3aAFhKwalLwlR26W0anuWUpDqa0PkJNfugIL8KtXMZMjS+Uf4CRh/rlejrRF2fUj RmXc+LMvDRewKqjoCKmqXJtcLNxG+wU7TqEAQz879LZzqMgUYDBJfFmqYfnpFLG1 ESUtpGXWY0SEqpV+lDs= =WUyp -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 23 19:19:21 2021 Received: (at 47327) by debbugs.gnu.org; 23 Mar 2021 23:19:21 +0000 Received: from localhost ([127.0.0.1]:33390 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOqIy-0000kb-Vn for submit@debbugs.gnu.org; Tue, 23 Mar 2021 19:19:21 -0400 Received: from mout.web.de ([212.227.15.4]:38619) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOqIw-0000kK-8x for 47327@debbugs.gnu.org; Tue, 23 Mar 2021 19:19:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616541551; bh=f8dYOBD5RLefjW3ucqVqmSWtIX/yDnQleqe9f3b5ygU=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=Zrh8CzgKlpVfPHY577YvlchshqtyYhR6vE8hbQJ/PQuTjWT7po9kvJqtcnsZlfsoL Uz9C6Td22KzjrH90c1cTpgITtg0nQaPRx8M4pvCpRpDDPtbZAXuzWQOwdfQBOgW1y8 QVDnjUIwB8EYjfDD151P0pHzPElanTNkuuKIszxk= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from drachen.dragon ([188.98.108.176]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1Madzi-1lvR1p2X0M-00cHhH; Wed, 24 Mar 2021 00:19:11 +0100 From: Michael Heerdegen To: akater Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated References: <87k0pz5d6u.fsf@gmail.com> Date: Wed, 24 Mar 2021 00:19:10 +0100 In-Reply-To: <87k0pz5d6u.fsf@gmail.com> (akater's message of "Mon, 22 Mar 2021 17:08:09 +0000") Message-ID: <87v99hjw5t.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:K89dRFI6Vw6dRpQx1zQETZJnX4wCGlsrB7gV2wXW75g50AB4lyh fdwcpih7L7T+JdlSFeYEXdUBTGEyF+qEzZLGNX3XTg32anWGH0Bi13L0qnvzbg6UPUX0yPv 3BLxsfUzSsob8IexVnZBMZfdlMe2St/sRPRzYj1ut/RrucuigIt8DceoTaURYYWQ6sGFpFc SWqGpJBefwmVckUw1i7VQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:+cx9h+Rm4rk=:Xy7RX1w4fgtQKOcGjG1jJA OIxcFVGWWHY6s2tGjeWjDKUkGcpDNLArUQmJWMvn/dcOOsE5C8bHnzAotluRo5ispyt3NJS7W hGPiuavGmQz18wVF6yZ74DaIclbCq5ztXvdORuquLxWtNm+immk4cz5ZWn5Pe6HFaBAQttoKi j5ub/vhLscf1dBMdT/KtxQHpqlFV78SSkpRvW8ZiiFgc18vp+DyeV3GEfNg2fVvdsEWbDMbbD PDZBhEldVtszrqMlSH4TIOcvqX+dcagtpGzo6+e1D5j/w7Adklc70yrtzSycAIH67fnrvBpn0 5H0gygBt/Qv/CMSoSAhQB4qG7tu6oHGtRSsA8YOAVxB1FJGDVTeDKQflfshgpvFYAKUAJTcuq m1dqDkgTCgX1XGARW9wCDZ2h88rc0OlwFVmKqhXNM/wgAYAwfbsyD7VCWkLMUv/4YWy5ol//x dHaTQq12j9IuqB/1MGwUmIa5CN5zmlxyQYnW27ngwew8E8kiQo7fvYaeT8LSy9x+mCs/GqqJv wKcp0KZgHHfmH+w7sKGDEgT7U1t2e7IaEbmdF1btBgnDghwf+d9wLn1Mf4bXuixCxhi0rtMam /sf8R59gYp4agF49UxY5xFKDIPv5kw/VZ57fjy/FhRfBeQNvDEMr41nKWwXSjZSPDF/X19eLn sZxDwlOS+QqgZwh/MuK/FvOvJp/Op0Mc0hgkXTelS7pDTLMWriNGcMvlLsIocLM2W/TQJa7HG eD+4Bllv4RnVYJjXV4aZncTwSQRCShajOFIhCD3pV2kyLPB6xW/J9KsUOsAkpS5zcNH2WveXB w2L7sfCfKJ9SOT1cgD55wkdrsaIrhStRBjaDpDX32Cr6xNDrexZVdQlXQYW2UhjPrHfMQxdmg YkUqStUYRGdnDcMP7LRJuBzqb8yxJSKNeE03QhHBo= X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) akater writes: > In ~(eql VAL)~ specializer, ~VAL~ should evaluate during evaluation of > the macroexpanded ~cl-defmethod~ form. Are you sure that it should? How is it in Common Lisp? From the documentation in Emacs I don't get the clear impression that what you want is intended. I don't say that it could not be useful, though. Regards, Michael. From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 23 19:43:00 2021 Received: (at 47327) by debbugs.gnu.org; 23 Mar 2021 23:43:00 +0000 Received: from localhost ([127.0.0.1]:33434 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOqfs-0003Sx-L6 for submit@debbugs.gnu.org; Tue, 23 Mar 2021 19:43:00 -0400 Received: from mail-ej1-f54.google.com ([209.85.218.54]:35430) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOqfp-0003Sk-Vq for 47327@debbugs.gnu.org; Tue, 23 Mar 2021 19:42:59 -0400 Received: by mail-ej1-f54.google.com with SMTP id jy13so29883388ejc.2 for <47327@debbugs.gnu.org>; Tue, 23 Mar 2021 16:42:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=vN1Mg8qx1hg+Z1cGmjdajhWayqIi80hllbBOT9ThwVk=; b=pSKFX9zUAjCbCP4mIxdgG5+nWZvKu6/W0qjdslZ5ZYJutEtuuMb6w71sgwXLBrclie MGZKKaJzkElyAsZtDaQpBjAvf2JhGyupYpdzZQVjKLymOmXFopcPUTFuouaH7eRvygLA plWqiOhpl1/boD8GfjT20ISFBGqFS0JKM5R9sotasAb2HP4WFhpISigILreVnGuQZ0Gr rQRPfkin3GVXxs6E0wa4Ra+JZscJuJEmdHOWbP9wmeV5X6spWDfXTlf0N2MR1KEafw/v 0VB564e1pUXhNm30ys1aAIF1oIYdXL0++7GutEQPBhsE7XijnVL1y2C10vExh62HgxLk JIMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=vN1Mg8qx1hg+Z1cGmjdajhWayqIi80hllbBOT9ThwVk=; b=fGR9R9rgYvr6MSmDXREs5etpiwi96nevLs1pSovBxh1MV8aCk7GhCZ1y7GGSXxYMHa mp2WUQpGzE8lAIA+0XzW3h+fVtko+SAAVxItwaqXxWNlKchJCHKLV30zVKkNNP2ih1OD cpRHoYpDiVrs0j3s3VyCo7oc1ljualWSI2S2c01tOA0aQNc8fGFkqEy60TxOo9JO5kRH YFOHQpeDpyzwzjxODE8aH+1o00Eoq3uR2aNQ7FBtEW20Bdm/L31iHLr29ehpiPbI4hsB aLrT2wqArwwf5iHASSruOJ39AXnOsieK3nHygd1D7JKQN83YxzE1+1/sWQ61mrE4VS7n 8G7Q== X-Gm-Message-State: AOAM5313mJFlH+G5eitu3++EYL9zWgYunKtmyw2F5xJ1NxG65Ca3QCgB H5Uf3urpFmrnXbObv0BgMf4= X-Google-Smtp-Source: ABdhPJxxOutMIe/Ym+zMmqnEMUYPL0w2UGVT1Vw/m3PHYSHpZoV8WJMskHYFT+72KMJQumm45ijohg== X-Received: by 2002:a17:907:211b:: with SMTP id qn27mr649298ejb.203.1616542972054; Tue, 23 Mar 2021 16:42:52 -0700 (PDT) Received: from localhost ([185.220.101.129]) by smtp.googlemail.com with ESMTPSA id bm21sm107628ejb.36.2021.03.23.16.42.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Mar 2021 16:42:51 -0700 (PDT) From: akater To: Michael Heerdegen Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated In-Reply-To: <87v99hjw5t.fsf@web.de> References: <87k0pz5d6u.fsf@gmail.com> <87v99hjw5t.fsf@web.de> Date: Tue, 23 Mar 2021 23:32:06 +0000 Message-ID: <87h7l15tvt.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Michael Heerdegen writes: > Are you sure that it should? I've listed 3 reasons why it should. Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (nuclearspace[at]gmail.com) 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.218.54 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.218.54 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Michael Heerdegen writes: > Are you sure that it should? I've listed 3 reasons why it should. > How is it in Common Lisp?=20 This is addressed in point (1). --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJLBAEBCgA1FiEEgu5SJRdnQOF34djNsr6xYbHsf0QFAmBaenYXHG51Y2xlYXJz cGFjZUBnbWFpbC5jb20ACgkQsr6xYbHsf0TEtRAAnZUACuVzuv9eWadw9/gyDKWe RPUMFT9p8Yi+5BM3G4yuTdiVT8u7bg+KYPgMw5qZowkSz2u59tNdgZISx1omXm6q 8AiYmlHo684CQbfAuKPylZ+eSvBy2U25vFEdIlXlr93Q0lvEylYLV4Kt0ybfqi+S OoS+uRYqf/UH3UwPBEH+M5BVSOlOK9cA3oOWBy9KIUJPVTXUluWi+ERU9SmqDukI ZSil4HuY58W2vMh89fotzZrFp7+SPZ1tXmWSxZB8DPG77i/5ehPKdYtaar57P/+R EbWOYMX+8JzGuwNuCTXPasL+Ja+BIHqjYnz3xeII61tDiVO2eA1AWx0xcXIxoHP/ vws4Wtcor41bXaUvTWCWQg9eqkuON+PTMYv4AvHIInsLdLx+ViLgu2Dj28ghP0qx zfEbQqRJtZ8r3VMUDcI+a6iwaCJlu2H/WbuYt6mWUO+NKgdB65FfWsWcVUHnQ4qH bU4L8LuOAZgX/JVme6PIbU/Lsb0a+xFlh3CeaX9ShY1OCu7dHc1bgoLOxzB8dfbM UOob/57zwD3/b03WBSS4nRhmaNnr26l8dXUgpxDApW3Gyygb3zpr26VpbrAdWwGY 2ywwfPgx6Kl2qaCssl0n1OrLpGrT7Je0stJF23XnBfwRDJqmHEDAGa6DsVzgYjN5 G36HuLZu1Ft4N1arHRM= =BeCb -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Mar 23 20:23:01 2021 Received: (at 47327) by debbugs.gnu.org; 24 Mar 2021 00:23:01 +0000 Received: from localhost ([127.0.0.1]:33449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOrIb-0004Tt-4P for submit@debbugs.gnu.org; Tue, 23 Mar 2021 20:23:01 -0400 Received: from mout.web.de ([212.227.15.4]:53491) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lOrIX-0004Ta-J0 for 47327@debbugs.gnu.org; Tue, 23 Mar 2021 20:22:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1616545370; bh=V2NaWacltZuuoMty6Hw1jpjqbl9QOrrIe+Xg9b9BAEI=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=IkqrevARf+a92meH9qdg0WQMZm/oHxd6dDjhse4c5yPk0Zlbr20OW6O3V/kdGc/22 Aqx4tJrc/5fCr6KApHXxZCO5WT6WQJhg2EicRxgi1cX6qkPfwEQ+fra8Femui5kG5f Bdf31s9X+19OOs1iARtEroNHbFyZP0DN4I5iHf3k= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from drachen.dragon ([94.218.221.32]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MWRoI-1l92Iq175m-00XceU; Wed, 24 Mar 2021 01:22:50 +0100 From: Michael Heerdegen To: akater Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated References: <87k0pz5d6u.fsf@gmail.com> <87v99hjw5t.fsf@web.de> <87h7l15tvt.fsf@gmail.com> Date: Wed, 24 Mar 2021 01:22:49 +0100 In-Reply-To: <87h7l15tvt.fsf@gmail.com> (akater's message of "Tue, 23 Mar 2021 23:32:06 +0000") Message-ID: <87mtutjt7q.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:lKr/CDXHafIGeIyn4Jyfnoj/zrCu0n268Q69GoORhLipne1Dr5c fhYxWTQS4v/f2K+lB7DxS2njADP6C8H2NeYqpXzT8whlAar7PGaFcQUYdgPjpTLCIwjC128 o0f3QbW8k5luqLQUoIwnsr+fdznrDtPllL1Yc3fhVvAQ1lA6tdovjvbIy/5D5/gpWjA9iHD OZdeh3quex8Z9iAuKdxzA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:4oGK5cylRrs=:5UNsUgj/VATSE6MfuPo0GO BJFLvEt6kMZ8mhHC+xxAiTDfD9iMCYOmkhO8NBH+CWD5a1oif45HfZOl1rob0FAGBsIfeFngW cHkeWQi0+TwoI65cE7XWFqLcWTCzakyQkA+ikF9LHxyyJZJOFHZitSNce/Biv+fEPOCV6jl/h IBVDIKJ72LMa6hyNLm5LxIiU26hw/jFxcUBQI5AX4DN1piWMxQsuLw0z6KUBGo1PhvDtbaast U6Oj3PiCoATcGBx3pM068si2BGJpAT0NDyrmi6VTa8gURB+hKwXVQV1zD8kyaX0yLB43UaFvJ AXURwi40+2xKcTlvs3i2ug2Tu5EChlFVTQFqoBgeM8HuPz3NDftL5RpWACZVQlBN1hmPQZvyb TnwjGNzEH9AxMEev3LIc2TB6n1QDBrjqF08cYg6JgSOr3zBnJE+xdHrs5OUb3ecMCWB3WS33t /XfBxISd5MEs3RmiqZR/DdAKAcVYakg0ltIH6k2jMKkqgVkgn7t8NhKkWUw0897rNT6zBA+uK 2gCXKrPCIbMEr9Kbw19K23uMDoGsvBHA6LYwxso8NPSnt5kD8gP7Hz6bd3dBIXI6TPNn3odgP i7dHmXNEhcKYyz0BLJWbysfIejvVkvAfspyFotjbTHf+1c/ezvx5wjPqK5iw9FwSyyG469LvV cRskwDsi2/crX4tyMhLNg7j5SaZnJeDYPlV9Vl9QVOSrt2lwrxQD95UUp5Okg5n/Rzn3Lbqwm 7cDnQ18a38S5qNzlzRL2UGFVXyjnhWmeFmRpTL61bn/kGbnMskTfR1CdsFoSWBNrL9jt+LgIx 9ELO8KbUJOJ2QfIN949IyJOXu29HFGUH1/gHygw3Vx/f4CyEFhqb1+8xAI+QqAVoznHjEIc8k afUD8q5Gyajvomk3WzQvjHGaAyNWx104u4QNlG4lc= Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) akater writes: > > How is it in Common Lisp? > > This is addressed in point (1). Indeed, sorry for not reading carefully. Then I think your request is valid. I don't feel competent enough to provide a fix, though. And I wonder if fixing this might break existing code that exploits the current behavior. Michael. From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 02 07:36:36 2021 Received: (at 47327) by debbugs.gnu.org; 2 Jul 2021 11:36:37 +0000 Received: from localhost ([127.0.0.1]:35172 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lzHTI-0003CT-OF for submit@debbugs.gnu.org; Fri, 02 Jul 2021 07:36:36 -0400 Received: from mail-ej1-f52.google.com ([209.85.218.52]:39803) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lzHTC-0003CA-QC for 47327@debbugs.gnu.org; Fri, 02 Jul 2021 07:36:35 -0400 Received: by mail-ej1-f52.google.com with SMTP id hp26so2902128ejc.6 for <47327@debbugs.gnu.org>; Fri, 02 Jul 2021 04:36:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=Vc6jNhQi97YnMgGEIRUT3chfhwgOkFqtwSpKw/QsIMU=; b=HR3MZUqxpM1q4dm3ICFkfZNuxGhrjwZOV7pHWz/oufHa6Z5X3hn8PLiKS8kiZfy47/ QF6sq5Z6HsU27U21PuBiQ3tSw8qAHZi7Qzp9W+DIdzxEZMAvjddQC4DigkCivtuQ7ZrT 2xt/QZiZlJ+z05J2V6DR57smtARB3trj/i55nmTXsbdNuPZrINuymK5b5LIvr2LbxNwn y+4Vl6Q7RxqLhXv9hRuVFK7sJEbko0aqDwTKr7yTAmnuzfyCVyPD0cy7IIW58Y/Zvwmb R5xXLnfuP/L9LrBmRzOFit0CvMQhG8eK0yc4ds8dZWEzJZH0BihIO1IniJyY5xcnaEgG L26w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=Vc6jNhQi97YnMgGEIRUT3chfhwgOkFqtwSpKw/QsIMU=; b=q7SUjCkx8RIMEvc3OTXUQ4NktzunkTqwOpEW5Oohdd7Arue/MKcl4dpUyqz9Q3shEv +yAsLtsJa+zdMJoddEIPHEJ1T3F2FkB7bX4MHXKQHB3p9/dVQX061zlUGA1LttIJU9+5 N23Vy8gWQZ3v6aaaJiCOqPBdg42rsD9/W85lQkvcnR9EAx6ajFmuFGSvs+4tRsoGijta vyZMjVu3LQwPGf5kTWMQe02LPU4/Bl9e5DZBWM5AAIbUhAkFD3HFhdWfPSON5nQ7Vv8A 1us47Q0t4TySAjEyqMyNSJwGTYVnpmgkwq7UbBwZvejfVgBCaC5jKzIic6IGMukewT2T j82Q== X-Gm-Message-State: AOAM530UHTxCo5cOpF6U9Ub3AsrI/xSOu0lR1GuZNdMUbHETvzqlbO78 UxAbxZL/e+YI/SAibZ0B36w= X-Google-Smtp-Source: ABdhPJy8seeDZc+O92oCEX2UwOfD/yr1Khp0bzxv7I1CwY4zhI/2KYp8ZLi45JN4q2lDLxWw5cpJ4g== X-Received: by 2002:a17:907:7d8c:: with SMTP id oz12mr4785240ejc.202.1625225784962; Fri, 02 Jul 2021 04:36:24 -0700 (PDT) Received: from localhost ([185.220.101.14]) by smtp.googlemail.com with ESMTPSA id b12sm1220890edu.30.2021.07.02.04.36.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Jul 2021 04:36:24 -0700 (PDT) From: akater To: Michael Heerdegen Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated In-Reply-To: <87mtutjt7q.fsf@web.de> References: <87k0pz5d6u.fsf@gmail.com> <87v99hjw5t.fsf@web.de> <87h7l15tvt.fsf@gmail.com> <87mtutjt7q.fsf@web.de> Date: Fri, 02 Jul 2021 11:25:18 +0000 Message-ID: <87zgv5klep.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 1.2 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: How about introducing at least cl:eql specializer, like in my original post, and announce it to replace eql eventually? Current behaviour does not really make sense. Note that I had to > (setf (car specializer) 'eql) Content analysis details: (1.2 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.2 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net [Blocked - see ] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (nuclearspace[at]gmail.com) 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.218.52 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.218.52 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --=-=-= Content-Type: text/plain How about introducing at least cl:eql specializer, like in my original post, and announce it to replace eql eventually? Current behaviour does not really make sense. Note that I had to > (setf (car specializer) 'eql) as constructing a new cons did not work for me. --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJLBAEBCgA1FiEEgu5SJRdnQOF34djNsr6xYbHsf0QFAmDe96EXHG51Y2xlYXJz cGFjZUBnbWFpbC5jb20ACgkQsr6xYbHsf0QJJxAAoQj1AQ8dzK9EN3xcsijX8QN4 g4yyPuDmvVk+Q2sjshgEw55lloIe1pg6cD5gZNTtIy4IUTbl1FF21D6/UzA5kcmu NVNPKn/gAOET4JFqxe2W3NLuNda2bO2yXwytCjet5dD2q8TRAlByhhBmJ6VMWY9+ YZmcA/ZwM4NquNlcFFh3s/UMiZyTdtA3Q/2Idjy3afJKpo2xp51kj5BgN7lVBJa4 PL9vVOMRivwSXRaChU+bf3msx1J594gvUn3E3NjY+Uf/AalBzJw0wXKzKNdACCjQ iF8KlqKDjG1xFGiZpa5BNMKKyvv1zk2y1pXvfY+NRUhYwDiBS1/XfC3P75esBudI yhTjdT7J9cMLogzH40bRrNmrN5zCI/hNpijfukW/WQUVJXVXdSjoiJDsnzmPW6z5 FjxjtpvE9Yo4RcVIY530MoFbdYRYQVwIrygrosxDawAY3yfSshzpUj/WwVcWvbMZ 148BbkFYoMu43aOe0OEtI2TvHCagI51brLJakLZerZO94scOZdzEfWq2DjHnhEwE kyIDy+7FkNB07Qr2pYte/KanvhIRnGr9TJRGPk3hLtILWKxaDY8t28GkBr2ykl3w vEBArI84ebo6iM63SgFhDRCYfcLQzmG60ZnYb2+o6gE1bx2AzaccbNVH+xmxZRV2 nw2cseYipGv+vQpa9es= =mAN1 -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Thu Jul 15 23:03:30 2021 Received: (at 47327) by debbugs.gnu.org; 16 Jul 2021 03:03:31 +0000 Received: from localhost ([127.0.0.1]:50223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m4E8Q-000865-PM for submit@debbugs.gnu.org; Thu, 15 Jul 2021 23:03:30 -0400 Received: from mout.web.de ([212.227.15.14]:55961) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m4E8N-00085r-V2 for 47327@debbugs.gnu.org; Thu, 15 Jul 2021 23:03:29 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1626404598; bh=ZKiUUYDkmTz5ZfH+8AwNwOWGEXxVLmm5KmqWS4r16ow=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=JATsc3QX2OFQZre/297vQ2b3ev49+0eySO06nopg+O3Sl15hxmDkj9bQOLdiS9u3/ S6uOUr33xmaYM5nq8zoIWPgf4Vezss0TgqVWDwH6dCxF+cRoapcm8Muer6NpieSSub b0FS03MICl5+RnCtIKxwnQDecEvAdC8nkxnpnYI4= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from drachen.dragon ([88.66.201.45]) by smtp.web.de (mrweb004 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Md16Y-1ln6gh3kqA-00ICYv; Fri, 16 Jul 2021 05:03:17 +0200 From: Michael Heerdegen To: akater Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated References: <87k0pz5d6u.fsf@gmail.com> <87v99hjw5t.fsf@web.de> <87h7l15tvt.fsf@gmail.com> <87mtutjt7q.fsf@web.de> <87zgv5klep.fsf@gmail.com> Date: Fri, 16 Jul 2021 05:03:16 +0200 In-Reply-To: <87zgv5klep.fsf@gmail.com> (akater's message of "Fri, 02 Jul 2021 11:25:18 +0000") Message-ID: <871r7z9czv.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K1:k68MDVUaNiVbgIQ/l+RCH+IXeiFyXWhzQUG5tOpdbM42BHkF35l QDx0BdyVawY9RTJLoRJQgO96Ozewo32dkUZFDpAPS8o9XINLNv/D+nf5OyyuTsZ4ehf7o08 zj1KC9NCL8h68YQi88OLmMCV0mRTGYbYWQhtsnDbC/A0/nH1V15Mn27sa8BXe7sFgxtbCpw vEICOT7FDpg8urhZkV1zg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:/fNydvRU8j0=:WpGEOHtXzkNhOlxX5RAugI mKtUUU8eopB9g/FVBoXGsdC5VGe6oeljZaCdZNyjr5f5BBOUDgS4pjt+pUSfgd/6sX1aWmhu4 IjwQnmAfTzlMXM8kipLpgrB/HBZ3iLI+qArAynY1qOrSl4D/REKECIXEzfCQkN8s+53V8OXoW uQiVwa/bp07G3PeTf91b5l7atXQFZs3HjGoVKrhTisBh+bkZ3WoPUIL+O6O4c4jGucAakf++X G01bO8pgyak25erkMfsDEGThgNMmam82EKhCcr3kJ2i0g4n277IAfnZN07tAlwveov9CuyWa0 9Gkw8UxKt6NdyvePUC2tL7Ft+TDnYLRSjqTuO4TASsVmh7TxDsqEIk+VlJEHT/1Uz6UwWsJb/ vDCbSXuibSrbp1b0MgKNBfnnO3t69Dw1905xUHie7kGDZaGOJ2U/gzn7wGzFcBbvg+strC62R qn1LcPDIewDNkxsZoEVsip/B24bpyGFblWbN+l8T3MycOgWQFQ71T9JnZ+5pMokFQ4cizJW+z L/Jr8uMdgvM7HBCEhZyDsD3jd85zEfM26a+K/fX04ewIfK2CKQj3bc6GS4GSb1mbZumKflkMb z8TgG9FlN4IS9f0gvTqhwjveFZR2HdTkfFeRlM8qtjeYntDRW/nFMWzhc/4srUTHaQdqwOG2g uulfeIhU34TygjrCsC+k8nDgMjDUx+ML2aivxuS19bsIbwL39WFuzzLQeb3LFTe8uUyJYS0Le uSfhjJeg9pUfRhDRNMpb/PiFaVWjkHJMkl4CUXmYht/ZkuCHyp6Rz+9jA+Tfw6wJYaSNkVeCj N/8o8kUoRo4OqqNJ7evBxdj9ngrLtN/oNKfdkpyTMds6NJm24NLgSE+PlwYdifJLr/JkVuawC vwn6gMDum+JDYhLZZfkHUok5MWZtb5r9cUpXSzWRMk3+m78pELW+Z18Apa8BNaIAVOLAIjpdh 3GY7n79Et/yK1Ep1qtllSTUroOOwo2aUpaXal4QiEEBhqItkQRYFcTfwptDHmfWDKSa+lTNsz biWSpqn8e5GIDPn9nx+ChCXge2yW5EhG1L+VF0P5+cVpKKStNeLQkp0THCxP2nITnUmxYtBeE 65VON1sYgieCR5Ot3GIR792lgT2w4cp9CD2eB4qM3XM/43P2JwQX9/fiA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org, Stefan Monnier X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) akater writes: > How about introducing at least cl:eql specializer, like in my original > post, and announce it to replace eql eventually? Current behaviour does > not really make sense. Stefan, could you please maybe take over if you get the chance? TIA, Michael. From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 16 17:00:31 2021 Received: (at 47327) by debbugs.gnu.org; 16 Jul 2021 21:00:31 +0000 Received: from localhost ([127.0.0.1]:52447 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m4Uwh-0006Lb-JP for submit@debbugs.gnu.org; Fri, 16 Jul 2021 17:00:31 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:14019) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m4Uwc-0006LJ-1T for 47327@debbugs.gnu.org; Fri, 16 Jul 2021 17:00:30 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id D004B1001F4; Fri, 16 Jul 2021 17:00:19 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 6EFE110008C; Fri, 16 Jul 2021 17:00:18 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1626469218; bh=kZEnzpqWVJ5nMfbEWoeYId+9PCl3ZzSWPAhQtC2wKCI=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=AO3tpdIqLswsqRedsIrb+HkPMqtYwewwcKm3oa/PmcA4HLUKH5OsVSiKGVVKZ5/zU EaEcM1yR1TWlCim/dErtApSqLNbq21c79gEeVGfpV0c1PVRb7MogDPmAC7vxCTyVfI HKl19uh9VfZdYL7yw6yo8jvyULmQiVn5U1yoT9ShVkGLOaeZl2sghMLd16mc5cZBZb LKmt6YRei6QJFjXg/S7bMPaby1gb+FSLJp8MetJwgkJ5/bCYeldn0q5BtnqdSoc2J1 Q2kar+NFIx5FxDKHAl8kKMmIQdnJadX2FTxEajy1SVW3Etfme7exi3R6sQkBMDLqXa MPT8Kp1zdwuuw== Received: from alfajor (unknown [216.154.29.138]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 2C31D12053A; Fri, 16 Jul 2021 17:00:18 -0400 (EDT) From: Stefan Monnier To: akater Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated Message-ID: References: <87k0pz5d6u.fsf@gmail.com> Date: Fri, 16 Jul 2021 17:00:17 -0400 In-Reply-To: <87k0pz5d6u.fsf@gmail.com> (akater's message of "Mon, 22 Mar 2021 17:08:09 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.097 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > #+begin_quote > The parameter specializer name ~(eql eql-specializer-form)~ > indicates that the corresponding argument must be eql to the object > that is the value of ~eql-specializer-form~ for the method to be applicable. > The ~eql-specializer-form~ is evaluated > at the time that the expansion of the defmethod macro is evaluated. > #+end_quote Oh, indeed, I completely missed that. That would be a nice improvement. Could you check to see which code would break if we made this change? The patch below seems to provide enough backward compatibility, but it would be nice to improve it so the warning is emitted at compile time via something like `macroexp-warn-and-return` so we get some kind of file&line number. Stefan diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index 544704be38..6d23537ebd 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -1158,7 +1158,12 @@ cl--generic-eql-generalizer (cl-defmethod cl-generic-generalizers ((specializer (head eql))) "Support for (eql VAL) specializers. These match if the argument is `eql' to VAL." - (puthash (cadr specializer) specializer cl--generic-eql-used) + (let ((form (cadr specializer))) + (puthash (if (or (not (symbolp form)) (macroexp-const-p form)) + (eval form t) + (message "Quoting obsolete `eql' form: %S" specializer) + form) + specializer cl--generic-eql-used)) (list cl--generic-eql-generalizer)) (cl--generic-prefill-dispatchers 0 (eql nil)) diff --git a/test/lisp/emacs-lisp/cl-generic-tests.el b/test/lisp/emacs-lisp/cl-generic-tests.el index 9312fb44a1..b48a48fb94 100644 --- a/test/lisp/emacs-lisp/cl-generic-tests.el +++ b/test/lisp/emacs-lisp/cl-generic-tests.el @@ -56,7 +56,11 @@ cl-generic-test-01-eql (should (equal (cl--generic-1 'a nil) '(a))) (should (equal (cl--generic-1 4 nil) '("quatre" 4))) (should (equal (cl--generic-1 5 nil) '("cinq" 5))) - (should (equal (cl--generic-1 6 nil) '("six" a)))) + (should (equal (cl--generic-1 6 nil) '("six" a))) + (defvar cl--generic-fooval 41) + (cl-defmethod cl--generic-1 ((_x (eql (+ cl--generic-fooval 1))) _y) + "forty-two") + (should (equal (cl--generic-1 42 nil) "forty-two"))) (cl-defstruct cl-generic-struct-parent a b) (cl-defstruct (cl-generic-struct-child1 (:include cl-generic-struct-parent)) c) From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 19 17:23:02 2021 Received: (at 47327) by debbugs.gnu.org; 19 Jul 2021 21:23:02 +0000 Received: from localhost ([127.0.0.1]:60501 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m5aj8-00083k-KL for submit@debbugs.gnu.org; Mon, 19 Jul 2021 17:23:02 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:53724) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m5aj7-000833-0d for 47327@debbugs.gnu.org; Mon, 19 Jul 2021 17:23:01 -0400 Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 0BF58100201; Mon, 19 Jul 2021 17:22:55 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 05B8B100083; Mon, 19 Jul 2021 17:22:54 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1626729774; bh=8VTKMmgejlWcRUS4jSo1lXPCh5dL0hOddWMz/FISgKQ=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=NpzfM12myhtfTMw9aYE5dHUC/friMFzP9j0dQOqoQ5gdVqEDuFW1YL3vpJ+TIZC5M zFK3V1N2y0fpkA4HmSxzeJso2bmac9sDJNkdYHqoEGB7E7xiPHI8lpl1dla5rz2rlv muqzkOZDA7KoYV5a1u8CXjGvEtlbGFp0ZW1sjptJyabFhvuK995eqNMQ5vX0pogMOE gDn8G5Now8KzwQSrm+9Kayz4AGcLbH/RCsXbQapCJiCJa5GO1xF2j9NLuDncQDJ1Gi jzD+j6Ug4MZFSi52GnH0NtBlaRhOdlb02rPMR5IR2Pwu4wjH+Y4L9gzG3VND1lEL7Y Cos/GRzvnMbpg== Received: from alfajor (unknown [216.154.29.138]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id A8F49120270; Mon, 19 Jul 2021 17:22:53 -0400 (EDT) From: Stefan Monnier To: akater Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated Message-ID: References: <87k0pz5d6u.fsf@gmail.com> Date: Mon, 19 Jul 2021 17:22:52 -0400 In-Reply-To: (Stefan Monnier's message of "Fri, 16 Jul 2021 17:00:17 -0400") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.097 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Stefan Monnier [2021-07-16 17:00:17] wrote: > Oh, indeed, I completely missed that. > That would be a nice improvement. BTW, if we make this change for `eql` it would make a lot of sense to make the same change for the `head` specializer. Stefan From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 19 22:39:34 2021 Received: (at 47327) by debbugs.gnu.org; 20 Jul 2021 02:39:34 +0000 Received: from localhost ([127.0.0.1]:60694 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m5ffR-0000xx-0N for submit@debbugs.gnu.org; Mon, 19 Jul 2021 22:39:34 -0400 Received: from mail-ej1-f41.google.com ([209.85.218.41]:37435) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1m5ffO-0000xg-O6 for 47327@debbugs.gnu.org; Mon, 19 Jul 2021 22:39:32 -0400 Received: by mail-ej1-f41.google.com with SMTP id hc15so32058856ejc.4 for <47327@debbugs.gnu.org>; Mon, 19 Jul 2021 19:39:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=VOq0A4/RXEL4cfU97IkNbEBB0ZU/fWk1ad5foLWW8rA=; b=cslnRChRJpvJHAtsxQrY3TyzbRYd63CGk/Lvkp+RUWG0AskYKp88c71cxqxykLkBXc 49MpBct11DNPV6YKJkK+tADzxD8/oB/qNhQVApP52eThunCuc+BSZodmD8payjvqQmdD UUVhYIBFBTrnO69ylyMg1CMoUn0vILtUDYpGkRKz6dvimA1xnEKy3s460sMycjRhJyiv zSe+5sy/u2vrtge2MMHRUnovLf1foAjCxvOyGQHgqG0d8faSn7fZQsQq+MzshRfAdBMI TRdUOqNF3KzqvcdF05rWKwmPArHj3QTQms/QHEL/6YccmzDka35inogSy2LacLotAvYl F4WA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=VOq0A4/RXEL4cfU97IkNbEBB0ZU/fWk1ad5foLWW8rA=; b=broHy6GQv9/acwQtxk6a0IpwR0yWIy6FgagT5VWt+Ub4ldLDV0qWZeBR8Y6sKeOa8U Nool7IWcxnDhzM6jila9OMU9HcBAM5mUnA7D4HVtSKPd4aDl4W7Vrzjs2Qd5r9nmC8lg CqEnnHF2Lchi9fIQcLk7ATh14Axu/xOWFCvy1mY7OnGhH8Ma0zGbk0yqG77wyQjFnD6F MpbDjfWT7jxHUFzANtW5+9LKawgxPB+ZFK8I0D8JXhUoF1l9WSyG9/OqmdybZ+3vXjL9 SwcW73f8FzSpc8kgWI9JkPj7eYD2ybQrKqMwgJjv1qGPijo68y7K2wFTbm75AFV4rR8Q xpBQ== X-Gm-Message-State: AOAM5326QoR1HeJ+QKcbnzhPl6QtXiXErFoBROgqXY+ETclqziaPBezS /WOlQZs1+4No3/9AKMRdYis= X-Google-Smtp-Source: ABdhPJyLNU9CItHvhLcDx2OEEdjW1MROL0dFjS5emMxXHIQY803QKJjOwB1CJ2JJDGtwENGy4SzZmg== X-Received: by 2002:a17:906:7111:: with SMTP id x17mr30089798ejj.294.1626748764865; Mon, 19 Jul 2021 19:39:24 -0700 (PDT) Received: from localhost ([5.104.110.89]) by smtp.googlemail.com with ESMTPSA id z5sm6561843ejn.65.2021.07.19.19.39.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Jul 2021 19:39:24 -0700 (PDT) From: akater To: Stefan Monnier Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated In-Reply-To: References: <87k0pz5d6u.fsf@gmail.com> Date: Tue, 20 Jul 2021 02:28:12 +0000 Message-ID: <87h7gpoh1f.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Stefan Monnier writes: > Could you check to see which code would break if we made this change? I looked for =E2=80=9C(eql=E2=80=9D and then for =E2=80=9Ccl-defmethod=E2= =80=9D, searching for generated code specifically. Unless there's less obvious code that generates cl-defmethod forms, it should all be in the attached patch. > (cl-defmethod cl-generic-generalizers ((specializer (head eql))) > "Support for (eql VAL) specializers. > These match if the argument is `eql' to VAL." > - (puthash (cadr specializer) specializer cl--generic-eql-used) > + (let ((form (cadr specializer))) > + (puthash (if (or (not (symbolp form)) (macroexp-const-p form)) > + (eval form t) > + (message "Quoting obsolete `eql' form: %S" specializer) > + form) > + specializer cl--generic-eql-used)) > (list cl--generic-eql-generalizer)) Which implies, those who want to specialize on a value of symbol x should write (eql (symbol-value 'x)), right? This irregularity better be pointed out somewhere; I rarely read Elisp manual so I'm not sure if it would be appropriate there. Otherwise, looks good, provided that it works. (JFYI, I don't think I will be able to properly test this patch soon enough.) Please note that there are two spots in the patch where I'm not sure what (if anything) should be done; marked with WARNING. --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJLBAEBCgA1FiEEgu5SJRdnQOF34djNsr6xYbHsf0QFAmD2NL4XHG51Y2xlYXJz cGFjZUBnbWFpbC5jb20ACgkQsr6xYbHsf0R5gw/+OC2gtSwFOT1XIJYOCkGioVJ5 BUOqk73PUBZ6AVI4x66qlMaA+lTJWoSFawhYh3j5isli6Jb/cBT50OEodICcEIh8 N2JyVOWonuCKN+TcoKkQmM6sn5kl/lMUSaBx807W2r0wdm/TYr+ngBBw0cCEYKnS Z7X/vxxnDdUGINV0G87F0HABJCzYxs4Zihc55DoSux9tHHaX9W1PMFcKOurXhy+k h91HUFYXtI+6AyXYQgVAFo25RRwVtwNDP4nD8t18/Sd1JNJoSCjC1XBtS7nx9gg0 YaqzOiv4DQkbNbprl/Z+ORGY7E1kvi7c36+p5ZLGwi/G6N93YJM1jIez85AaHRbz 6c3zXY69z040x5LzuWgTUsNY1DtZwAPJxs7Oh8/XEQRcK3uVNgUtWzX//rLdRn94 q5bFE4qikBxOxfi/Lcsx7slzFna44WLwlOOWzxt3l16Jj+U0sBRW+7lg5eX6Wtxb 8uSKp2G+E1MmNXKOfp8ts8yef58twIc3hl8ftrRcmHp2guWeaOihsNDIOFv2B40e wk+pldQhxRILGwtwNqxwdEZgd9Cvk+nWrSh8X/ihRogVqMhvmHXvGVOFUQ88++8v DpfFBK4IV0NL4hWGBjvrUeCQLoW3xRxAruhh3ce/XLh3xBHSNH3EnYDp2qSHBust UhH55Wf0erkBOo99vrs= =lPP1 -----END PGP SIGNATURE----- --==-=-=-- --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0001-Upcoming-changes-to-eql-specializer-use.patch Content-Transfer-Encoding: quoted-printable Content-Description: Necessary changes in eql specializer use >From 3d1463c9238ac9d0c246e9bbb769331a2d16ab8f Mon Sep 17 00:00:00 2001 From: akater Date: Tue, 20 Jul 2021 01:25:01 +0000 Subject: [PATCH] Upcoming changes to eql specializer use --- lisp/emacs-lisp/bindat.el | 24 ++++++++++++------------ lisp/emacs-lisp/cl-generic.el | 5 +++++ lisp/emacs-lisp/edebug.el | 18 +++++++++--------- lisp/emacs-lisp/map.el | 8 ++++---- lisp/emacs-lisp/radix-tree.el | 2 +- lisp/frame.el | 6 +++++- lisp/gnus/gnus-search.el | 2 +- lisp/image/image-converter.el | 12 ++++++------ lisp/mail/smtpmail.el | 6 +++--- lisp/progmodes/elisp-mode.el | 7 ++++--- lisp/progmodes/etags.el | 12 +++++++----- test/lisp/emacs-lisp/checkdoc-tests.el | 8 ++++---- 12 files changed, 61 insertions(+), 49 deletions(-) diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el index 247fb91379..76c2e80fda 100644 --- a/lisp/emacs-lisp/bindat.el +++ b/lisp/emacs-lisp/bindat.el @@ -657,33 +657,33 @@ defmacro bindat--pcase (&rest args) OP can be one of: unpack', (pack VAL), or (length VAL) where VAL is the name of a variable that will hold the value we need to pack.") =20 -(cl-defmethod bindat--type (op (_ (eql byte))) +(cl-defmethod bindat--type (op (_ (eql 'byte))) (bindat--pcase op ('unpack `(bindat--unpack-u8)) (`(length . ,_) `(cl-incf bindat-idx 1)) (`(pack . ,args) `(bindat--pack-u8 . ,args)))) =20 -(cl-defmethod bindat--type (op (_ (eql uint)) n) +(cl-defmethod bindat--type (op (_ (eql 'uint)) n) (if (eq n 8) (bindat--type op 'byte) (bindat--pcase op ('unpack `(bindat--unpack-uint ,n)) (`(length . ,_) `(cl-incf bindat-idx (/ ,n 8))) (`(pack . ,args) `(bindat--pack-uint ,n . ,args))))) =20 -(cl-defmethod bindat--type (op (_ (eql uintr)) n) +(cl-defmethod bindat--type (op (_ (eql 'uintr)) n) (if (eq n 8) (bindat--type op 'byte) (bindat--pcase op ('unpack `(bindat--unpack-uintr ,n)) (`(length . ,_) `(cl-incf bindat-idx (/ ,n 8))) (`(pack . ,args) `(bindat--pack-uintr ,n . ,args))))) =20 -(cl-defmethod bindat--type (op (_ (eql str)) len) +(cl-defmethod bindat--type (op (_ (eql 'str)) len) (bindat--pcase op ('unpack `(bindat--unpack-str ,len)) (`(length . ,_) `(cl-incf bindat-idx ,len)) (`(pack . ,args) `(bindat--pack-str ,len . ,args)))) =20 -(cl-defmethod bindat--type (op (_ (eql strz)) &optional len) +(cl-defmethod bindat--type (op (_ (eql 'strz)) &optional len) (bindat--pcase op ('unpack `(bindat--unpack-strz ,len)) (`(length ,val) @@ -701,25 +701,25 @@ defmacro bindat--pcase (&rest args) (bindat--pack-str ,len . ,args) (bindat--pack-strz . ,args)))))) =20 -(cl-defmethod bindat--type (op (_ (eql bits)) len) +(cl-defmethod bindat--type (op (_ (eql 'bits)) len) (bindat--pcase op ('unpack `(bindat--unpack-bits ,len)) (`(length . ,_) `(cl-incf bindat-idx ,len)) (`(pack . ,args) `(bindat--pack-bits ,len . ,args)))) =20 -(cl-defmethod bindat--type (_op (_ (eql fill)) len) +(cl-defmethod bindat--type (_op (_ (eql 'fill)) len) `(progn (cl-incf bindat-idx ,len) nil)) =20 -(cl-defmethod bindat--type (_op (_ (eql align)) len) +(cl-defmethod bindat--type (_op (_ (eql 'align)) len) `(progn (cl-callf bindat--align bindat-idx ,len) nil)) =20 -(cl-defmethod bindat--type (op (_ (eql type)) exp) +(cl-defmethod bindat--type (op (_ (eql 'type)) exp) (bindat--pcase op ('unpack `(funcall (bindat--type-ue ,exp))) (`(length . ,args) `(funcall (bindat--type-le ,exp) . ,args)) (`(pack . ,args) `(funcall (bindat--type-pe ,exp) . ,args)))) =20 -(cl-defmethod bindat--type (op (_ (eql vec)) count &rest type) +(cl-defmethod bindat--type (op (_ (eql 'vec)) count &rest type) (unless type (setq type '(byte))) (let ((fun (macroexpand-all (bindat--fun type) macroexpand-all-environme= nt))) (bindat--pcase op @@ -743,10 +743,10 @@ defmacro bindat--pcase (&rest args) `(dotimes (bindat--i ,count) (funcall ,fun (elt ,val bindat--i))))))) =20 -(cl-defmethod bindat--type (op (_ (eql unit)) val) +(cl-defmethod bindat--type (op (_ (eql 'unit)) val) (pcase op ('unpack val) (_ nil))) =20 -(cl-defmethod bindat--type (op (_ (eql struct)) &rest args) +(cl-defmethod bindat--type (op (_ (eql 'struct)) &rest args) (apply #'bindat--type op args)) =20 (cl-defmethod bindat--type (op (_ (eql :pack-var)) var &rest fields) diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index 544704be38..8250d62bbe 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -1269,6 +1269,11 @@ defun cl--generic-derived-specializers (mode &rest _) (cl-generic-define-context-rewriter major-mode (mode &rest modes) `(major-mode ,(if (consp mode) ;;E.g. could be (eql ...) + ;; WARNING: unsure whether this + ;; =E2=80=9Ccould be (eql ...)=E2=80=9D commentary (or= code) + ;; should be adjusted + ;; following the (planned) changes to eql specializer. + ;; Bug #47327 (progn (cl-assert (null modes)) mode) `(derived-mode ,mode . ,modes)))) =20 diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 2aec8197dc..7def9ff96a 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -1731,7 +1731,7 @@ defun edebug-match-form (cursor) =20 (defsubst edebug-match-body (cursor) (edebug-forms cursor)) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &optional)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&optional)) cursor specs) ;; Keep matching until one spec fails. (edebug-&optional-wrapper cursor specs #'edebug-&optional-wrapper)) =20 @@ -1755,7 +1755,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) "Handle &foo spec operators. &foo spec operators operate on all the subsequent SPECS.") =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &rest)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&rest)) cursor specs) ;; Repeatedly use specs until failure. (let (edebug-best-error edebug-error-point) @@ -1768,7 +1768,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (edebug-&optional-wrapper c (or s specs) rh))))) =20 =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &or)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&or)) cursor specs) ;; Keep matching until one spec succeeds, and return its results. ;; If none match, fail. ;; This needs to be optimized since most specs spend time here. @@ -1792,7 +1792,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (apply #'edebug-no-match cursor "Expected one of" original-specs)) )) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &interpose)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&interpose)) cursor specs) "Compute the specs for `&interpose SPEC FUN ARGS...'. Extracts the head of the data by matching it against SPEC, and then matches the rest by calling (FUN HEAD PF ARGS...) @@ -1817,7 +1817,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (append instrumented-head (edebug-match cursor newspec= s))) ,@args)))) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql ¬)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '¬)) cursor specs) ;; If any specs match, then fail (if (null (catch 'no-match (let ((edebug-gate nil)) @@ -1829,7 +1829,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) ;; This means nothing matched, so it is OK. nil) ;; So, return nothing =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &key)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&key)) cursor specs) ;; Following specs must look like ( ) ... ;; where is the name of a keyword, and spec is its spec. ;; This really doesn't save much over the expanded form and takes time. @@ -1842,7 +1842,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (car (cdr pair)))) specs)))) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &error)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&error)) cursor specs) ;; Signal an error, using the following string in the spec as argument. (let ((error-string (car specs)) (edebug-error-point (edebug-before-offset cursor))) @@ -1942,7 +1942,7 @@ defun edebug-match-nil (cursor) (defun edebug-match-function (_cursor) (error "Use function-form instead of function in edebug spec")) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &define)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&define)) cursor specs) ;; Match a defining form. ;; Normally, &define is interpreted specially other places. ;; This should only be called inside of a spec list to match the remaind= er @@ -1958,7 +1958,7 @@ defun edebug-match-function (_cursor) ;; Stop backtracking here (Bug#41988). (setq edebug-gate t))) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &name)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&name)) cursor specs) "Compute the name for `&name SPEC FUN` spec operator. =20 The full syntax of that operator is: diff --git a/lisp/emacs-lisp/map.el b/lisp/emacs-lisp/map.el index 5c76fb9eb9..c59342875d 100644 --- a/lisp/emacs-lisp/map.el +++ b/lisp/emacs-lisp/map.el @@ -407,15 +407,15 @@ defun map-merge-with (type function &rest maps) "Convert MAP into a map of TYPE.") =20 ;; FIXME: I wish there was a way to avoid this =CE=B7-redex! -(cl-defmethod map-into (map (_type (eql list))) +(cl-defmethod map-into (map (_type (eql 'list))) "Convert MAP into an alist." (map-pairs map)) =20 -(cl-defmethod map-into (map (_type (eql alist))) +(cl-defmethod map-into (map (_type (eql 'alist))) "Convert MAP into an alist." (map-pairs map)) =20 -(cl-defmethod map-into (map (_type (eql plist))) +(cl-defmethod map-into (map (_type (eql 'plist))) "Convert MAP into a plist." (let (plist) (map-do (lambda (k v) (setq plist `(,v ,k ,@plist))) map) @@ -510,7 +510,7 @@ defun map--into-hash (map keyword-args) map) ht)) =20 -(cl-defmethod map-into (map (_type (eql hash-table))) +(cl-defmethod map-into (map (_type (eql 'hash-table))) "Convert MAP into a hash-table with keys compared with `equal'." (map--into-hash map (list :size (map-length map) :test #'equal))) =20 diff --git a/lisp/emacs-lisp/radix-tree.el b/lisp/emacs-lisp/radix-tree.el index fb65975350..a529ed025d 100644 --- a/lisp/emacs-lisp/radix-tree.el +++ b/lisp/emacs-lisp/radix-tree.el @@ -240,7 +240,7 @@ defun radix-tree-count (tree) (declare-function map-apply "map" (function map)) =20 (defun radix-tree-from-map (map) - ;; Aka (cl-defmethod map-into (map (type (eql radix-tree)))) ...) + ;; Aka (cl-defmethod map-into (map (type (eql 'radix-tree)))) ...) (require 'map) (let ((rt nil)) (map-apply (lambda (k v) (setq rt (radix-tree-insert rt k v))) map) diff --git a/lisp/frame.el b/lisp/frame.el index 378d7c8e5b..0c79ce4c6f 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -36,7 +36,11 @@ (cl-generic-define-context-rewriter window-system (value) ;; If `value' is a `consp', it's probably an old-style specializer, ;; so just use it, and anyway `eql' isn't very useful on cons cells. - `(window-system ,(if (consp value) value `(eql ,value)))) + `(window-system ,(if (consp value) value + ;; WARNING: unsure whether this eql expression + ;; is actually an eql specializer. + ;; Bug #47327 + `(eql ',value)))) =20 (cl-defmethod frame-creation-function (params &context (window-system nil)) ;; It's tempting to get rid of tty-create-frame-with-faces and turn it i= nto diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el index 39bde837b3..53af2f6fe6 100644 --- a/lisp/gnus/gnus-search.el +++ b/lisp/gnus/gnus-search.el @@ -980,7 +980,7 @@ defsubst gnus-search-single-p (query) =20 ;; Most search engines use implicit ANDs. (cl-defmethod gnus-search-transform-expression ((_ gnus-search-engine) - (_expr (eql and))) + (_expr (eql 'and))) nil) =20 ;; Most search engines use explicit infixed ORs. diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el index e47f1f76e4..97bf1ac058 100644 --- a/lisp/image/image-converter.el +++ b/lisp/image/image-converter.el @@ -133,7 +133,7 @@ defun image-converter--value (type elem) (list value) value))) =20 -(cl-defmethod image-converter--probe ((type (eql graphicsmagick))) +(cl-defmethod image-converter--probe ((type (eql 'graphicsmagick))) "Check whether the system has GraphicsMagick installed." (with-temp-buffer (let ((command (image-converter--value type :command)) @@ -151,7 +151,7 @@ defun image-converter--value (type elem) (push (downcase (match-string 1)) formats))) (nreverse formats))))) =20 -(cl-defmethod image-converter--probe ((type (eql imagemagick))) +(cl-defmethod image-converter--probe ((type (eql 'imagemagick))) "Check whether the system has ImageMagick installed." (with-temp-buffer (let ((command (image-converter--value type :command)) @@ -171,7 +171,7 @@ defun image-converter--value (type elem) (push (downcase (match-string 1)) formats))) (nreverse formats)))) =20 -(cl-defmethod image-converter--probe ((type (eql ffmpeg))) +(cl-defmethod image-converter--probe ((type (eql 'ffmpeg))) "Check whether the system has ffmpeg installed." (with-temp-buffer (let ((command (image-converter--value type :command)) @@ -212,12 +212,12 @@ defun image-converter--filter-formats (suffixes) 'image-mode) collect suffix)) =20 -(cl-defmethod image-converter--convert ((type (eql graphicsmagick)) source +(cl-defmethod image-converter--convert ((type (eql 'graphicsmagick)) source image-format) "Convert using GraphicsMagick." (image-converter--convert-magick type source image-format)) =20 -(cl-defmethod image-converter--convert ((type (eql imagemagick)) source +(cl-defmethod image-converter--convert ((type (eql 'imagemagick)) source image-format) "Convert using ImageMagick." (image-converter--convert-magick type source image-format)) @@ -249,7 +249,7 @@ defun image-converter--convert-magick (type source imag= e-format) ;; error message. (buffer-string)))) =20 -(cl-defmethod image-converter--convert ((type (eql ffmpeg)) source +(cl-defmethod image-converter--convert ((type (eql 'ffmpeg)) source image-format) "Convert using ffmpeg." (let ((command (image-converter--value type :command))) diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index c1e2280033..a642ff4045 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -574,7 +574,7 @@ defun smtpmail-try-auth-methods (process supported-exte= nsions host port (error "Mechanism %S not implemented" mech)) =20 (cl-defmethod smtpmail-try-auth-method - (process (_mech (eql cram-md5)) user password) + (process (_mech (eql 'cram-md5)) user password) (let ((ret (smtpmail-command-or-throw process "AUTH CRAM-MD5"))) (when (eq (car ret) 334) (let* ((challenge (substring (cadr ret) 4)) @@ -596,13 +596,13 @@ defun smtpmail-try-auth-methods (process supported-ex= tensions host port (smtpmail-command-or-throw process encoded))))) =20 (cl-defmethod smtpmail-try-auth-method - (process (_mech (eql login)) user password) + (process (_mech (eql 'login)) user password) (smtpmail-command-or-throw process "AUTH LOGIN") (smtpmail-command-or-throw process (base64-encode-string user t)) (smtpmail-command-or-throw process (base64-encode-string password t))) =20 (cl-defmethod smtpmail-try-auth-method - (process (_mech (eql plain)) user password) + (process (_mech (eql 'plain)) user password) ;; We used to send an empty initial request, and wait for an ;; empty response, and then send the password, but this ;; violate a SHOULD in RFC 2222 paragraph 5.1. Note that this diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index a56c7093e7..f7bc8bcd82 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -696,7 +696,7 @@ defvar elisp-xref-find-def-functions nil non-nil result supersedes the xrefs produced by `elisp--xref-find-definitions'.") =20 -(cl-defmethod xref-backend-definitions ((_backend (eql elisp)) identifier) +(cl-defmethod xref-backend-definitions ((_backend (eql 'elisp)) identifier) (require 'find-func) ;; FIXME: use information in source near point to filter results: ;; (dvc-log-edit ...) - exclude 'feature @@ -875,7 +875,7 @@ defun elisp--xref-find-definitions (symbol) =20 (declare-function xref-apropos-regexp "xref" (pattern)) =20 -(cl-defmethod xref-backend-apropos ((_backend (eql elisp)) pattern) +(cl-defmethod xref-backend-apropos ((_backend (eql 'elisp)) pattern) (apply #'nconc (let ((regexp (xref-apropos-regexp pattern)) lst) @@ -893,7 +893,8 @@ defvar elisp--xref-identifier-completion-table (facep sym))) 'strict)) =20 -(cl-defmethod xref-backend-identifier-completion-table ((_backend (eql eli= sp))) +(cl-defmethod xref-backend-identifier-completion-table ((_backend + (eql 'elisp))) elisp--xref-identifier-completion-table) =20 (cl-defstruct (xref-elisp-location diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index f0180ceeec..ce1d8e5e62 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -2062,19 +2062,21 @@ defvar etags-xref-find-definitions-tag-order '(tag-= exact-match-p ;;;###autoload (defun etags--xref-backend () 'etags) =20 -(cl-defmethod xref-backend-identifier-at-point ((_backend (eql etags))) +(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'etags))) (find-tag--default)) =20 -(cl-defmethod xref-backend-identifier-completion-table ((_backend (eql eta= gs))) +(cl-defmethod xref-backend-identifier-completion-table ((_backend + (eql 'etags))) (tags-lazy-completion-table)) =20 -(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend (e= ql etags))) +(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend + (eql 'etags= ))) (find-tag--completion-ignore-case)) =20 -(cl-defmethod xref-backend-definitions ((_backend (eql etags)) symbol) +(cl-defmethod xref-backend-definitions ((_backend (eql 'etags)) symbol) (etags--xref-find-definitions symbol)) =20 -(cl-defmethod xref-backend-apropos ((_backend (eql etags)) pattern) +(cl-defmethod xref-backend-apropos ((_backend (eql 'etags)) pattern) (etags--xref-find-definitions (xref-apropos-regexp pattern) t)) =20 (defun etags--xref-find-definitions (pattern &optional regexp?) diff --git a/test/lisp/emacs-lisp/checkdoc-tests.el b/test/lisp/emacs-lisp/= checkdoc-tests.el index 7a7aa9fb3c..2a1d8b2763 100644 --- a/test/lisp/emacs-lisp/checkdoc-tests.el +++ b/test/lisp/emacs-lisp/checkdoc-tests.el @@ -49,27 +49,27 @@ (with-temp-buffer (emacs-lisp-mode) ;; this method matches if A is the symbol `smthg' and if b is a list: - (insert "(cl-defmethod foo ((a (eql smthg)) (b list)) \"Return A+B.\")= ") + (insert "(cl-defmethod foo ((a (eql 'smthg)) (b list)) \"Return A+B.\"= )") (checkdoc-defun))) =20 (ert-deftest checkdoc-cl-defmethod-qualified-ok () "Checkdoc should be happy with a `cl-defmethod' using qualifiers." (with-temp-buffer (emacs-lisp-mode) - (insert "(cl-defmethod test :around ((a (eql smthg))) \"Return A.\")") + (insert "(cl-defmethod test :around ((a (eql 'smthg))) \"Return A.\")") (checkdoc-defun))) =20 (ert-deftest checkdoc-cl-defmethod-with-extra-qualifier-ok () "Checkdoc should be happy with a :extra qualified `cl-defmethod'." (with-temp-buffer (emacs-lisp-mode) - (insert "(cl-defmethod foo :extra \"foo\" ((a (eql smthg))) \"Return A= .\")") + (insert "(cl-defmethod foo :extra \"foo\" ((a (eql 'smthg))) \"Return = A.\")") (checkdoc-defun)) =20 (with-temp-buffer (emacs-lisp-mode) (insert - "(cl-defmethod foo :extra \"foo\" :after ((a (eql smthg))) \"Return A= .\")") + "(cl-defmethod foo :extra \"foo\" :after ((a (eql 'smthg))) \"Return = A.\")") (checkdoc-defun))) =20 (ert-deftest checkdoc-cl-defmethod-with-extra-qualifier-and-nil-args-ok () --=20 2.31.1 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 03 12:12:05 2021 Received: (at 47327) by debbugs.gnu.org; 3 Aug 2021 16:12:05 +0000 Received: from localhost ([127.0.0.1]:41244 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mAx1Q-0007S0-Dz for submit@debbugs.gnu.org; Tue, 03 Aug 2021 12:12:05 -0400 Received: from mail-ed1-f46.google.com ([209.85.208.46]:44820) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mAx1N-0007RU-5L for 47327@debbugs.gnu.org; Tue, 03 Aug 2021 12:12:02 -0400 Received: by mail-ed1-f46.google.com with SMTP id z11so7239573edb.11 for <47327@debbugs.gnu.org>; Tue, 03 Aug 2021 09:12:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:in-reply-to:references:date:message-id :mime-version; bh=/bfTxI3qKaVUpmbDL2nBX/5zjskTp1RuRxyajRvwzwI=; b=UdkGvRlKDDG2vZQGiskaF67DDhHM6V6zfnU1YRw93LkPKO8Bqwu1zO9Wr0bMT1M1yR L0t/vHO218QgIFPZff8PKQ4D3jBFNM5qN2tk76i/C1AH/KJSM+jZ6/MzXDKcIoWR09ho Hqc4QXtZO0xu9kMLcUvl0s94OtM+QmtRzT4uuLaACKAxZ7cwPXJEToL2quyxaLrLfyr4 RNS1Tg0pnCrAO8aiyp1luf6K3FeBQLpNNRrndEFEgCrWCHacdLGZD0NfCugaW6Qt/FSy F1GQwVkU9LCIBaSh+5g/IJOXsmTE7cZoNLnE/DnNZtGtDemRZQBav9SxI9AqHMq3vkUD sf6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version; bh=/bfTxI3qKaVUpmbDL2nBX/5zjskTp1RuRxyajRvwzwI=; b=DzxQahle0e/FDBrZYziuOWTuGNv2fijzYBe6i4ydlZJH49f9D6PLxzTmnGPJQ2CleA E6HvgigwbexTOWmAADSM1nQ0C8e2wfFvraoNuFWhPWRrJmXSv10glIDQXEb834NuqGo2 ehqMuAIn1aIwsEAHMP5eCJnMWCauj5lvU7DRAF127/NJVcLAWUp0JZu8EP58RS4+7PXm Hp1qLrBtTHq7IPa25KlnhxfkMxt7ST3PWXEoeN5j/36Ix0x6y5QyUNGPTjALqmtSkIof 03kSd2G/uYxC+aGDXNgtjuj4LAkiajmKHmLZnUa4sio2fpKmERFMlEW7RuC32Kgc2Ttw rODQ== X-Gm-Message-State: AOAM530BEWgJZlTpzQPseMz9uL4YNgUpUlHQyCtgeRuErbRkNtJoEzbJ Q7L52vCMU1bymEZO8YL2waw= X-Google-Smtp-Source: ABdhPJyhN7gDiLvXXrwNpKGDnhUjvNjfwFS1FEB165CZGfdT1/ZamMebmiGvf2evF58TrIddPi+q0w== X-Received: by 2002:aa7:c357:: with SMTP id j23mr11882416edr.370.1628007115352; Tue, 03 Aug 2021 09:11:55 -0700 (PDT) Received: from localhost ([5.183.209.217]) by smtp.googlemail.com with ESMTPSA id e7sm6450900ejt.80.2021.08.03.09.11.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Aug 2021 09:11:54 -0700 (PDT) From: akater To: Stefan Monnier Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated In-Reply-To: References: <87k0pz5d6u.fsf@gmail.com> Date: Tue, 03 Aug 2021 16:00:44 +0000 Message-ID: <87h7g634cz.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.2 (/) --=-=-= Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" --==-=-= Content-Type: text/plain In the new patch, I combined your solution and my fixes to current cl-defmethod forms. I also tried to write an appropriate description in the patch header and in etc/NEWS. Please note that questionable spots remain, marked with `WARNING:'. --==-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJLBAEBCgA1FiEEgu5SJRdnQOF34djNsr6xYbHsf0QFAmEJaC8XHG51Y2xlYXJz cGFjZUBnbWFpbC5jb20ACgkQsr6xYbHsf0QilRAA1W24MNpc6Q9NgeWFy2fWVGb9 64g/c5sGyvES8MSfxSy+PX88pt9BpUyVZ6NgKGWVWZXxTkxsh32SgEpjn0guwkki f9YUetaDZ9dtfwJUS5sBYo2xaMkgXNoPPOppdQRmmaoeBl0E5lLaZxIrbJEEpiiI y7MJ+eqIH7eSHoL6xGE+7g6R0UqPDiLsCdW783FGx+ci84JX1+bSzFoUvSl6Cbz3 foM4bxXOPQCJHnuNIWFpDQyDVeBnkdvu+v/LoHs94B/5Iyvk3CHM6Y/KZuiNh8zU xQxegxw4EZLjfY0zLP6vIQo6b4cIE/XsJxfvFsXxnzLc5QADwabznEJTd3/ZC18x k+GpyR5hLd5NxLlYgyzzsuyVSxUl8VGz7/7be4ZG5Y13pmEwgZ36PgahaAWxqUQF hODcjy0ksdff+BmJrm0me1aWuss0WQ/3uUEjTpF2QLd6/RdEEvYwf/Pp1Uk/fPka L8Evs7pKpuw5MGyP2VO6P1a5jc1W1u5vpoCaccqhjN+/TX2GmH9ZBYG0qA0+Vq6h S6byhWRN7a32J/LUmwOOywi0OovhU72IsXujHCjCWWtneiZaBbLFremb2tsXqqFS Ci1wXdyiGwcjtqSWEagdkt/+TkkR2cF+qUm2BofBQYpkpflRZG9DYacK51FI3PDf UbAi9o/JFAcbki6/SLM= =0/ng -----END PGP SIGNATURE----- --==-=-=-- --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0001-Evaluate-eql-specializers.patch Content-Transfer-Encoding: quoted-printable Content-Description: Evaluate eql specializers >From bee57a5cab2762f50425c775757672a2c487573e Mon Sep 17 00:00:00 2001 From: akater Date: Tue, 20 Jul 2021 01:25:01 +0000 Subject: [PATCH] Evaluate eql specializers * lisp/emacs-lisp/cl-generic.el (cl-generic-generalizers): Evaluate forms that are eql specializers. Provide backward compatibility with a warning. * test/lisp/emacs-lisp/cl-generic-tests.el: Add a test. * lisp/emacs-lisp/bindat.el (bindat--type): Adhere to the new rule. * lisp/emacs-lisp/edebug.el (edebug--match-&-spec-op): Adhere to the new ru= le. * lisp/emacs-lisp/map.el (map-into): Adhere to the new rule. * lisp/emacs-lisp/radix-tree.el (map-into): Adhere to the new rule. * lisp/frame.el (cl-generic-define-context-rewriter): Adhere to the new rul= e. * lisp/gnus/gnus-search.el (gnus-search-transform-expression): Adhere to the new rule. * lisp/image/image-converter.el (image-converter--probe image-converter--convert): Adhere to the new rule. * lisp/mail/smtpmail.el (smtpmail-try-auth-method): Adhere to the new rule. * lisp/progmodes/elisp-mode.el (xref-backend-definitions) (xref-backend-apropos): Adhere to the new rule. * lisp/progmodes/etags.el (xref-backend-identifier-at-point) (xref-backend-identifier-completion-table) (xref-backend-identifier-completion-ignore-case) (xref-backend-definitions)(xref-backend-apropos): Adhere to the new rule. * test/lisp/emacs-lisp/checkdoc-tests.el (checkdoc-cl-defmethod-with-types-ok) (checkdoc-cl-defmethod-qualified-ok) (checkdoc-cl-defmethod-with-extra-qualifier-ok): Adhere to the new rule. * etc/NEWS: Describe the change. --- etc/NEWS | 5 +++++ lisp/emacs-lisp/bindat.el | 24 ++++++++++++------------ lisp/emacs-lisp/cl-generic.el | 12 +++++++++++- lisp/emacs-lisp/edebug.el | 18 +++++++++--------- lisp/emacs-lisp/map.el | 8 ++++---- lisp/emacs-lisp/radix-tree.el | 2 +- lisp/frame.el | 6 +++++- lisp/gnus/gnus-search.el | 2 +- lisp/image/image-converter.el | 12 ++++++------ lisp/mail/smtpmail.el | 6 +++--- lisp/progmodes/elisp-mode.el | 7 ++++--- lisp/progmodes/etags.el | 12 +++++++----- test/lisp/emacs-lisp/checkdoc-tests.el | 8 ++++---- test/lisp/emacs-lisp/cl-generic-tests.el | 6 +++++- 14 files changed, 77 insertions(+), 51 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 48dec0a2b3..fb6eddc754 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -810,6 +810,11 @@ work as before. It is now defined as a generalized variable that can be used with 'setf' to modify the value stored in a given class slot. =20 +--- +*** 'form' in '(eql form)' specializers in 'cl-defmethod' is now evaluated. +This corresponds to the behaviour of defmethod in Common Lisp Object Syste= m. +A warning is issued when old style is used. + ** New minor mode 'cl-font-lock-built-in-mode' for 'lisp-mode'. The mode provides refined highlighting of built-in functions, types, and variables. diff --git a/lisp/emacs-lisp/bindat.el b/lisp/emacs-lisp/bindat.el index 247fb91379..76c2e80fda 100644 --- a/lisp/emacs-lisp/bindat.el +++ b/lisp/emacs-lisp/bindat.el @@ -657,33 +657,33 @@ defmacro bindat--pcase (&rest args) OP can be one of: unpack', (pack VAL), or (length VAL) where VAL is the name of a variable that will hold the value we need to pack.") =20 -(cl-defmethod bindat--type (op (_ (eql byte))) +(cl-defmethod bindat--type (op (_ (eql 'byte))) (bindat--pcase op ('unpack `(bindat--unpack-u8)) (`(length . ,_) `(cl-incf bindat-idx 1)) (`(pack . ,args) `(bindat--pack-u8 . ,args)))) =20 -(cl-defmethod bindat--type (op (_ (eql uint)) n) +(cl-defmethod bindat--type (op (_ (eql 'uint)) n) (if (eq n 8) (bindat--type op 'byte) (bindat--pcase op ('unpack `(bindat--unpack-uint ,n)) (`(length . ,_) `(cl-incf bindat-idx (/ ,n 8))) (`(pack . ,args) `(bindat--pack-uint ,n . ,args))))) =20 -(cl-defmethod bindat--type (op (_ (eql uintr)) n) +(cl-defmethod bindat--type (op (_ (eql 'uintr)) n) (if (eq n 8) (bindat--type op 'byte) (bindat--pcase op ('unpack `(bindat--unpack-uintr ,n)) (`(length . ,_) `(cl-incf bindat-idx (/ ,n 8))) (`(pack . ,args) `(bindat--pack-uintr ,n . ,args))))) =20 -(cl-defmethod bindat--type (op (_ (eql str)) len) +(cl-defmethod bindat--type (op (_ (eql 'str)) len) (bindat--pcase op ('unpack `(bindat--unpack-str ,len)) (`(length . ,_) `(cl-incf bindat-idx ,len)) (`(pack . ,args) `(bindat--pack-str ,len . ,args)))) =20 -(cl-defmethod bindat--type (op (_ (eql strz)) &optional len) +(cl-defmethod bindat--type (op (_ (eql 'strz)) &optional len) (bindat--pcase op ('unpack `(bindat--unpack-strz ,len)) (`(length ,val) @@ -701,25 +701,25 @@ defmacro bindat--pcase (&rest args) (bindat--pack-str ,len . ,args) (bindat--pack-strz . ,args)))))) =20 -(cl-defmethod bindat--type (op (_ (eql bits)) len) +(cl-defmethod bindat--type (op (_ (eql 'bits)) len) (bindat--pcase op ('unpack `(bindat--unpack-bits ,len)) (`(length . ,_) `(cl-incf bindat-idx ,len)) (`(pack . ,args) `(bindat--pack-bits ,len . ,args)))) =20 -(cl-defmethod bindat--type (_op (_ (eql fill)) len) +(cl-defmethod bindat--type (_op (_ (eql 'fill)) len) `(progn (cl-incf bindat-idx ,len) nil)) =20 -(cl-defmethod bindat--type (_op (_ (eql align)) len) +(cl-defmethod bindat--type (_op (_ (eql 'align)) len) `(progn (cl-callf bindat--align bindat-idx ,len) nil)) =20 -(cl-defmethod bindat--type (op (_ (eql type)) exp) +(cl-defmethod bindat--type (op (_ (eql 'type)) exp) (bindat--pcase op ('unpack `(funcall (bindat--type-ue ,exp))) (`(length . ,args) `(funcall (bindat--type-le ,exp) . ,args)) (`(pack . ,args) `(funcall (bindat--type-pe ,exp) . ,args)))) =20 -(cl-defmethod bindat--type (op (_ (eql vec)) count &rest type) +(cl-defmethod bindat--type (op (_ (eql 'vec)) count &rest type) (unless type (setq type '(byte))) (let ((fun (macroexpand-all (bindat--fun type) macroexpand-all-environme= nt))) (bindat--pcase op @@ -743,10 +743,10 @@ defmacro bindat--pcase (&rest args) `(dotimes (bindat--i ,count) (funcall ,fun (elt ,val bindat--i))))))) =20 -(cl-defmethod bindat--type (op (_ (eql unit)) val) +(cl-defmethod bindat--type (op (_ (eql 'unit)) val) (pcase op ('unpack val) (_ nil))) =20 -(cl-defmethod bindat--type (op (_ (eql struct)) &rest args) +(cl-defmethod bindat--type (op (_ (eql 'struct)) &rest args) (apply #'bindat--type op args)) =20 (cl-defmethod bindat--type (op (_ (eql :pack-var)) var &rest fields) diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index 544704be38..941e436ff7 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -1158,7 +1158,12 @@ defvar cl--generic-eql-used (make-hash-table :test #= 'eql)) (cl-defmethod cl-generic-generalizers ((specializer (head eql))) "Support for (eql VAL) specializers. These match if the argument is `eql' to VAL." - (puthash (cadr specializer) specializer cl--generic-eql-used) + (let ((form (cadr specializer))) + (puthash (if (or (not (symbolp form)) (macroexp-const-p form)) + (eval form t) + (message "Quoting obsolete `eql' form: %S" specializer) + form) + specializer cl--generic-eql-used)) (list cl--generic-eql-generalizer)) =20 (cl--generic-prefill-dispatchers 0 (eql nil)) @@ -1269,6 +1274,11 @@ defun cl--generic-derived-specializers (mode &rest _) (cl-generic-define-context-rewriter major-mode (mode &rest modes) `(major-mode ,(if (consp mode) ;;E.g. could be (eql ...) + ;; WARNING: unsure whether this + ;; =E2=80=9Ccould be (eql ...)=E2=80=9D commentary (or= code) + ;; should be adjusted + ;; following the (planned) changes to eql specializer. + ;; Bug #47327 (progn (cl-assert (null modes)) mode) `(derived-mode ,mode . ,modes)))) =20 diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index 2aec8197dc..7def9ff96a 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -1731,7 +1731,7 @@ defun edebug-match-form (cursor) =20 (defsubst edebug-match-body (cursor) (edebug-forms cursor)) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &optional)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&optional)) cursor specs) ;; Keep matching until one spec fails. (edebug-&optional-wrapper cursor specs #'edebug-&optional-wrapper)) =20 @@ -1755,7 +1755,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) "Handle &foo spec operators. &foo spec operators operate on all the subsequent SPECS.") =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &rest)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&rest)) cursor specs) ;; Repeatedly use specs until failure. (let (edebug-best-error edebug-error-point) @@ -1768,7 +1768,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (edebug-&optional-wrapper c (or s specs) rh))))) =20 =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &or)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&or)) cursor specs) ;; Keep matching until one spec succeeds, and return its results. ;; If none match, fail. ;; This needs to be optimized since most specs spend time here. @@ -1792,7 +1792,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (apply #'edebug-no-match cursor "Expected one of" original-specs)) )) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &interpose)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&interpose)) cursor specs) "Compute the specs for `&interpose SPEC FUN ARGS...'. Extracts the head of the data by matching it against SPEC, and then matches the rest by calling (FUN HEAD PF ARGS...) @@ -1817,7 +1817,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (append instrumented-head (edebug-match cursor newspec= s))) ,@args)))) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql ¬)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '¬)) cursor specs) ;; If any specs match, then fail (if (null (catch 'no-match (let ((edebug-gate nil)) @@ -1829,7 +1829,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) ;; This means nothing matched, so it is OK. nil) ;; So, return nothing =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &key)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&key)) cursor specs) ;; Following specs must look like ( ) ... ;; where is the name of a keyword, and spec is its spec. ;; This really doesn't save much over the expanded form and takes time. @@ -1842,7 +1842,7 @@ defun edebug-&optional-wrapper (cursor specs remainde= r-handler) (car (cdr pair)))) specs)))) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &error)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&error)) cursor specs) ;; Signal an error, using the following string in the spec as argument. (let ((error-string (car specs)) (edebug-error-point (edebug-before-offset cursor))) @@ -1942,7 +1942,7 @@ defun edebug-match-nil (cursor) (defun edebug-match-function (_cursor) (error "Use function-form instead of function in edebug spec")) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &define)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&define)) cursor specs) ;; Match a defining form. ;; Normally, &define is interpreted specially other places. ;; This should only be called inside of a spec list to match the remaind= er @@ -1958,7 +1958,7 @@ defun edebug-match-function (_cursor) ;; Stop backtracking here (Bug#41988). (setq edebug-gate t))) =20 -(cl-defmethod edebug--match-&-spec-op ((_ (eql &name)) cursor specs) +(cl-defmethod edebug--match-&-spec-op ((_ (eql '&name)) cursor specs) "Compute the name for `&name SPEC FUN` spec operator. =20 The full syntax of that operator is: diff --git a/lisp/emacs-lisp/map.el b/lisp/emacs-lisp/map.el index 5c76fb9eb9..c59342875d 100644 --- a/lisp/emacs-lisp/map.el +++ b/lisp/emacs-lisp/map.el @@ -407,15 +407,15 @@ defun map-merge-with (type function &rest maps) "Convert MAP into a map of TYPE.") =20 ;; FIXME: I wish there was a way to avoid this =CE=B7-redex! -(cl-defmethod map-into (map (_type (eql list))) +(cl-defmethod map-into (map (_type (eql 'list))) "Convert MAP into an alist." (map-pairs map)) =20 -(cl-defmethod map-into (map (_type (eql alist))) +(cl-defmethod map-into (map (_type (eql 'alist))) "Convert MAP into an alist." (map-pairs map)) =20 -(cl-defmethod map-into (map (_type (eql plist))) +(cl-defmethod map-into (map (_type (eql 'plist))) "Convert MAP into a plist." (let (plist) (map-do (lambda (k v) (setq plist `(,v ,k ,@plist))) map) @@ -510,7 +510,7 @@ defun map--into-hash (map keyword-args) map) ht)) =20 -(cl-defmethod map-into (map (_type (eql hash-table))) +(cl-defmethod map-into (map (_type (eql 'hash-table))) "Convert MAP into a hash-table with keys compared with `equal'." (map--into-hash map (list :size (map-length map) :test #'equal))) =20 diff --git a/lisp/emacs-lisp/radix-tree.el b/lisp/emacs-lisp/radix-tree.el index fb65975350..a529ed025d 100644 --- a/lisp/emacs-lisp/radix-tree.el +++ b/lisp/emacs-lisp/radix-tree.el @@ -240,7 +240,7 @@ defun radix-tree-count (tree) (declare-function map-apply "map" (function map)) =20 (defun radix-tree-from-map (map) - ;; Aka (cl-defmethod map-into (map (type (eql radix-tree)))) ...) + ;; Aka (cl-defmethod map-into (map (type (eql 'radix-tree)))) ...) (require 'map) (let ((rt nil)) (map-apply (lambda (k v) (setq rt (radix-tree-insert rt k v))) map) diff --git a/lisp/frame.el b/lisp/frame.el index 9b3d120598..8c05ad2fe5 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -36,7 +36,11 @@ (cl-generic-define-context-rewriter window-system (value) ;; If `value' is a `consp', it's probably an old-style specializer, ;; so just use it, and anyway `eql' isn't very useful on cons cells. - `(window-system ,(if (consp value) value `(eql ,value)))) + `(window-system ,(if (consp value) value + ;; WARNING: unsure whether this eql expression + ;; is actually an eql specializer. + ;; Bug #47327 + `(eql ',value)))) =20 (cl-defmethod frame-creation-function (params &context (window-system nil)) ;; It's tempting to get rid of tty-create-frame-with-faces and turn it i= nto diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el index 39bde837b3..53af2f6fe6 100644 --- a/lisp/gnus/gnus-search.el +++ b/lisp/gnus/gnus-search.el @@ -980,7 +980,7 @@ defsubst gnus-search-single-p (query) =20 ;; Most search engines use implicit ANDs. (cl-defmethod gnus-search-transform-expression ((_ gnus-search-engine) - (_expr (eql and))) + (_expr (eql 'and))) nil) =20 ;; Most search engines use explicit infixed ORs. diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el index e47f1f76e4..97bf1ac058 100644 --- a/lisp/image/image-converter.el +++ b/lisp/image/image-converter.el @@ -133,7 +133,7 @@ defun image-converter--value (type elem) (list value) value))) =20 -(cl-defmethod image-converter--probe ((type (eql graphicsmagick))) +(cl-defmethod image-converter--probe ((type (eql 'graphicsmagick))) "Check whether the system has GraphicsMagick installed." (with-temp-buffer (let ((command (image-converter--value type :command)) @@ -151,7 +151,7 @@ defun image-converter--value (type elem) (push (downcase (match-string 1)) formats))) (nreverse formats))))) =20 -(cl-defmethod image-converter--probe ((type (eql imagemagick))) +(cl-defmethod image-converter--probe ((type (eql 'imagemagick))) "Check whether the system has ImageMagick installed." (with-temp-buffer (let ((command (image-converter--value type :command)) @@ -171,7 +171,7 @@ defun image-converter--value (type elem) (push (downcase (match-string 1)) formats))) (nreverse formats)))) =20 -(cl-defmethod image-converter--probe ((type (eql ffmpeg))) +(cl-defmethod image-converter--probe ((type (eql 'ffmpeg))) "Check whether the system has ffmpeg installed." (with-temp-buffer (let ((command (image-converter--value type :command)) @@ -212,12 +212,12 @@ defun image-converter--filter-formats (suffixes) 'image-mode) collect suffix)) =20 -(cl-defmethod image-converter--convert ((type (eql graphicsmagick)) source +(cl-defmethod image-converter--convert ((type (eql 'graphicsmagick)) source image-format) "Convert using GraphicsMagick." (image-converter--convert-magick type source image-format)) =20 -(cl-defmethod image-converter--convert ((type (eql imagemagick)) source +(cl-defmethod image-converter--convert ((type (eql 'imagemagick)) source image-format) "Convert using ImageMagick." (image-converter--convert-magick type source image-format)) @@ -249,7 +249,7 @@ defun image-converter--convert-magick (type source imag= e-format) ;; error message. (buffer-string)))) =20 -(cl-defmethod image-converter--convert ((type (eql ffmpeg)) source +(cl-defmethod image-converter--convert ((type (eql 'ffmpeg)) source image-format) "Convert using ffmpeg." (let ((command (image-converter--value type :command))) diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 133a2e1828..33bdd050bd 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -596,7 +596,7 @@ defun smtpmail-try-auth-methods (process supported-exte= nsions host port (error "Mechanism %S not implemented" mech)) =20 (cl-defmethod smtpmail-try-auth-method - (process (_mech (eql cram-md5)) user password) + (process (_mech (eql 'cram-md5)) user password) (let ((ret (smtpmail-command-or-throw process "AUTH CRAM-MD5"))) (when (eq (car ret) 334) (let* ((challenge (substring (cadr ret) 4)) @@ -618,13 +618,13 @@ defun smtpmail-try-auth-methods (process supported-ex= tensions host port (smtpmail-command-or-throw process encoded))))) =20 (cl-defmethod smtpmail-try-auth-method - (process (_mech (eql login)) user password) + (process (_mech (eql 'login)) user password) (smtpmail-command-or-throw process "AUTH LOGIN") (smtpmail-command-or-throw process (base64-encode-string user t)) (smtpmail-command-or-throw process (base64-encode-string password t))) =20 (cl-defmethod smtpmail-try-auth-method - (process (_mech (eql plain)) user password) + (process (_mech (eql 'plain)) user password) ;; We used to send an empty initial request, and wait for an ;; empty response, and then send the password, but this ;; violate a SHOULD in RFC 2222 paragraph 5.1. Note that this diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index 7ed2d3d08c..542f8ad0b1 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -696,7 +696,7 @@ defvar elisp-xref-find-def-functions nil non-nil result supersedes the xrefs produced by `elisp--xref-find-definitions'.") =20 -(cl-defmethod xref-backend-definitions ((_backend (eql elisp)) identifier) +(cl-defmethod xref-backend-definitions ((_backend (eql 'elisp)) identifier) (require 'find-func) ;; FIXME: use information in source near point to filter results: ;; (dvc-log-edit ...) - exclude 'feature @@ -875,7 +875,7 @@ defun elisp--xref-find-definitions (symbol) =20 (declare-function xref-apropos-regexp "xref" (pattern)) =20 -(cl-defmethod xref-backend-apropos ((_backend (eql elisp)) pattern) +(cl-defmethod xref-backend-apropos ((_backend (eql 'elisp)) pattern) (apply #'nconc (let ((regexp (xref-apropos-regexp pattern)) lst) @@ -893,7 +893,8 @@ defvar elisp--xref-identifier-completion-table (facep sym))) 'strict)) =20 -(cl-defmethod xref-backend-identifier-completion-table ((_backend (eql eli= sp))) +(cl-defmethod xref-backend-identifier-completion-table ((_backend + (eql 'elisp))) elisp--xref-identifier-completion-table) =20 (cl-defstruct (xref-elisp-location diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index f0180ceeec..ce1d8e5e62 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -2062,19 +2062,21 @@ defvar etags-xref-find-definitions-tag-order '(tag-= exact-match-p ;;;###autoload (defun etags--xref-backend () 'etags) =20 -(cl-defmethod xref-backend-identifier-at-point ((_backend (eql etags))) +(cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'etags))) (find-tag--default)) =20 -(cl-defmethod xref-backend-identifier-completion-table ((_backend (eql eta= gs))) +(cl-defmethod xref-backend-identifier-completion-table ((_backend + (eql 'etags))) (tags-lazy-completion-table)) =20 -(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend (e= ql etags))) +(cl-defmethod xref-backend-identifier-completion-ignore-case ((_backend + (eql 'etags= ))) (find-tag--completion-ignore-case)) =20 -(cl-defmethod xref-backend-definitions ((_backend (eql etags)) symbol) +(cl-defmethod xref-backend-definitions ((_backend (eql 'etags)) symbol) (etags--xref-find-definitions symbol)) =20 -(cl-defmethod xref-backend-apropos ((_backend (eql etags)) pattern) +(cl-defmethod xref-backend-apropos ((_backend (eql 'etags)) pattern) (etags--xref-find-definitions (xref-apropos-regexp pattern) t)) =20 (defun etags--xref-find-definitions (pattern &optional regexp?) diff --git a/test/lisp/emacs-lisp/checkdoc-tests.el b/test/lisp/emacs-lisp/= checkdoc-tests.el index 7a7aa9fb3c..2a1d8b2763 100644 --- a/test/lisp/emacs-lisp/checkdoc-tests.el +++ b/test/lisp/emacs-lisp/checkdoc-tests.el @@ -49,27 +49,27 @@ (with-temp-buffer (emacs-lisp-mode) ;; this method matches if A is the symbol `smthg' and if b is a list: - (insert "(cl-defmethod foo ((a (eql smthg)) (b list)) \"Return A+B.\")= ") + (insert "(cl-defmethod foo ((a (eql 'smthg)) (b list)) \"Return A+B.\"= )") (checkdoc-defun))) =20 (ert-deftest checkdoc-cl-defmethod-qualified-ok () "Checkdoc should be happy with a `cl-defmethod' using qualifiers." (with-temp-buffer (emacs-lisp-mode) - (insert "(cl-defmethod test :around ((a (eql smthg))) \"Return A.\")") + (insert "(cl-defmethod test :around ((a (eql 'smthg))) \"Return A.\")") (checkdoc-defun))) =20 (ert-deftest checkdoc-cl-defmethod-with-extra-qualifier-ok () "Checkdoc should be happy with a :extra qualified `cl-defmethod'." (with-temp-buffer (emacs-lisp-mode) - (insert "(cl-defmethod foo :extra \"foo\" ((a (eql smthg))) \"Return A= .\")") + (insert "(cl-defmethod foo :extra \"foo\" ((a (eql 'smthg))) \"Return = A.\")") (checkdoc-defun)) =20 (with-temp-buffer (emacs-lisp-mode) (insert - "(cl-defmethod foo :extra \"foo\" :after ((a (eql smthg))) \"Return A= .\")") + "(cl-defmethod foo :extra \"foo\" :after ((a (eql 'smthg))) \"Return = A.\")") (checkdoc-defun))) =20 (ert-deftest checkdoc-cl-defmethod-with-extra-qualifier-and-nil-args-ok () diff --git a/test/lisp/emacs-lisp/cl-generic-tests.el b/test/lisp/emacs-lis= p/cl-generic-tests.el index 9312fb44a1..0093b04d1d 100644 --- a/test/lisp/emacs-lisp/cl-generic-tests.el +++ b/test/lisp/emacs-lisp/cl-generic-tests.el @@ -56,7 +56,11 @@ (should (equal (cl--generic-1 'a nil) '(a))) (should (equal (cl--generic-1 4 nil) '("quatre" 4))) (should (equal (cl--generic-1 5 nil) '("cinq" 5))) - (should (equal (cl--generic-1 6 nil) '("six" a)))) + (should (equal (cl--generic-1 6 nil) '("six" a))) + (defvar cl--generic-fooval 41) + (cl-defmethod cl--generic-1 ((_x (eql (+ cl--generic-fooval 1))) _y) + "forty-two") + (should (equal (cl--generic 42 nil) "forty-two"))) =20 (cl-defstruct cl-generic-struct-parent a b) (cl-defstruct (cl-generic-struct-child1 (:include cl-generic-struct-parent= )) c) --=20 2.31.1 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 03 19:02:48 2021 Received: (at 47327) by debbugs.gnu.org; 3 Aug 2021 23:02:48 +0000 Received: from localhost ([127.0.0.1]:41748 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mB3Qu-0000Wz-0g for submit@debbugs.gnu.org; Tue, 03 Aug 2021 19:02:48 -0400 Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:36130) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mB3Qs-0000Wn-It for 47327@debbugs.gnu.org; Tue, 03 Aug 2021 19:02:47 -0400 Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id DF06B80926; Tue, 3 Aug 2021 19:02:40 -0400 (EDT) Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id B0CFF80240; Tue, 3 Aug 2021 19:02:39 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1628031759; bh=tnYL1gpNhjk9bmz0CNt3Y1RiVEgrhA/+WT8g8tZaQ60=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=NTZ98huUTucK8C1nghW3ufVOMxbhDrHB3Mspkp+5jSzgPNP1ahARHi8NPuFt89k8n qjh9/T2TE0OS4qliccQosAYzeDtqejo5liU9v446g8YVdq+vnelitE0nJ46fUUxWKZ g98Z+TuN6FgLMYXuH8o2AWQq0+Y9BeK/eJptjgwBQYBL32wqltrwkEik4RPHKJLIQU 9Rr4s/JvJ6/gfQG9flvyUdFuWmmeTPnb6jNWiIxOtMAT7DbLsAhkyOs5J7vWRsdm1r hBJD3GcuqXvwUOQfpW3Db7rZU9Q9R2hE1vjqLys5h9QhBZ8yO1xULbFPytUds0lidb dyQH7zNXn1O2g== Received: from alfajor (unknown [216.154.29.138]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 776D712020A; Tue, 3 Aug 2021 19:02:39 -0400 (EDT) From: Stefan Monnier To: akater Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated Message-ID: References: <87k0pz5d6u.fsf@gmail.com> <87h7g634cz.fsf@gmail.com> Date: Tue, 03 Aug 2021 19:02:28 -0400 In-Reply-To: <87h7g634cz.fsf@gmail.com> (akater's message of "Tue, 03 Aug 2021 16:00:44 +0000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SPAM-INFO: Spam detection results: 0 ALL_TRUSTED -1 Passed through trusted hosts only via SMTP AWL -0.093 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain X-SPAM-LEVEL: X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > In the new patch, I combined your solution and my fixes to current > cl-defmethod forms. I also tried to write an appropriate description in > the patch header and in etc/NEWS. Thanks. > Please note that questionable spots remain, marked with `WARNING:'. Your intuition was right (i.e. the code you wrote was the right choice). I pushed it after removing those warnings as well as commenting out the compile-time warnings from cl-defmethod (which is useful to move to the new style but for now would be too annoying for third party packages which have to maintain compatibility with Emacs<28). Stefan From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 10 08:39:57 2021 Received: (at submit) by debbugs.gnu.org; 10 Aug 2021 12:39:57 +0000 Received: from localhost ([127.0.0.1]:58661 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDR2z-0005Ff-09 for submit@debbugs.gnu.org; Tue, 10 Aug 2021 08:39:57 -0400 Received: from lists.gnu.org ([209.51.188.17]:52950) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDR2x-0005FY-Ma for submit@debbugs.gnu.org; Tue, 10 Aug 2021 08:39:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58404) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mDR2x-0007Z7-BT for bug-gnu-emacs@gnu.org; Tue, 10 Aug 2021 08:39:55 -0400 Received: from ciao.gmane.io ([116.202.254.214]:46792) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mDR2w-0003DO-2X for bug-gnu-emacs@gnu.org; Tue, 10 Aug 2021 08:39:55 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mDR2q-00029n-Uj for bug-gnu-emacs@gnu.org; Tue, 10 Aug 2021 14:39:48 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Madhu Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated Date: Tue, 10 Aug 2021 18:09:46 +0530 Message-ID: References: <87k0pz5d6u.fsf@gmail.com> <87h7g634cz.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cancel-Lock: sha1:4yp7OiZRP55k2aE05oHmDZmUx/8= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) --=-=-= Content-Type: text/plain `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 . #>) [...] (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. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=lisp-frame.el-frame-creation-function-fix-window-system.patch 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 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue Aug 10 09:01:12 2021 Received: (at submit) by debbugs.gnu.org; 10 Aug 2021 13:01:12 +0000 Received: from localhost ([127.0.0.1]:58692 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDRNY-0005og-E2 for submit@debbugs.gnu.org; Tue, 10 Aug 2021 09:01:12 -0400 Received: from lists.gnu.org ([209.51.188.17]:38858) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mDRNW-0005oa-5R for submit@debbugs.gnu.org; Tue, 10 Aug 2021 09:01:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:34134) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mDRNT-0001Ud-3s for bug-gnu-emacs@gnu.org; Tue, 10 Aug 2021 09:01:09 -0400 Received: from mx23.mayflower.de ([2a01:4f8:10a:b0e::1]:48654) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mDRNN-0006qK-JF for bug-gnu-emacs@gnu.org; Tue, 10 Aug 2021 09:01:06 -0400 Received: from localhost (localhost [IPv6:::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mx23.mayflower.de (Postfix) with ESMTPSA id 072A2210679 for ; Tue, 10 Aug 2021 13:00:57 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mayflower.de; s=m1; t=1628600457; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fZPsDpOfIiIQl3jBnmD/ULVe3g+WqusMeAbf94KqwkA=; b=hgi5fBUpueSZmFOJlLX7Fg2GvEQQVc9fZttjH4P+3KoXMTAWzsMudIwrXnmcy+mVk7JWgO DQL97/+vKjnK530kNI0FYdVSmlJNrSmSoHgKoAwCVY1RvlCYQ5mjpGgjb7MzC5X7RzR2Hv TtDsG+BRWRJ0RtVdvKYRqbwz4ILL9Ryz6OFxxZQYIrtglOpE1CHKhS9K0POc8jwuHsPPY8 f9kTh49PtLS+Ph0pNkVbx6pwwMBug7A+YpJ3xYjpjRMTpmZNLigRHHXu/Xba94EJ6R1aWo zoTm2gEtVLLaCSd+j3GbzHhS3HO2vMjYuoT/PffjUkvXRVyeueQ8y3WoF/X1XA== References: <87k0pz5d6u.fsf@gmail.com> <87h7g634cz.fsf@gmail.com> From: Christian Albrecht To: bug-gnu-emacs@gnu.org Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated Date: Tue, 10 Aug 2021 14:56:31 +0200 In-reply-to: Message-ID: <87r1f1jvxz.fsf@mayflower.de> Mime-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a01:4f8:10a:b0e::1; envelope-from=christian.albrecht@mayflower.de; helo=mx23.mayflower.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.4 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) > `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 . # server <3>>) [...] (window-system) (tty . "/dev/pts/3") (tty-type > . "xterm-256color")) is this, by any chance, related to and fixed by https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49877#28 Cheers, Christian From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 19 07:41:33 2021 Received: (at submit) by debbugs.gnu.org; 19 Aug 2021 11:41:33 +0000 Received: from localhost ([127.0.0.1]:58703 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mGgQO-0001iL-Vo for submit@debbugs.gnu.org; Thu, 19 Aug 2021 07:41:33 -0400 Received: from lists.gnu.org ([209.51.188.17]:43404) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mGgQN-0001iE-FI for submit@debbugs.gnu.org; Thu, 19 Aug 2021 07:41:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:50642) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mGgQM-0001HL-Su for bug-gnu-emacs@gnu.org; Thu, 19 Aug 2021 07:41:31 -0400 Received: from ciao.gmane.io ([116.202.254.214]:47142) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mGgQJ-0008PJ-KX for bug-gnu-emacs@gnu.org; Thu, 19 Aug 2021 07:41:29 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mGgQF-000726-TS for bug-gnu-emacs@gnu.org; Thu, 19 Aug 2021 13:41:23 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bug-gnu-emacs@gnu.org From: Madhu Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated Date: Thu, 19 Aug 2021 17:11:34 +0530 Message-ID: References: <87k0pz5d6u.fsf@gmail.com> <87h7g634cz.fsf@gmail.com> <87r1f1jvxz.fsf@mayflower.de> Mime-Version: 1.0 Content-Type: text/plain Cancel-Lock: sha1:o85u9yT17L92OanxVdpa5RgPsOo= Received-SPF: pass client-ip=116.202.254.214; envelope-from=geb-bug-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.1 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) * Christian Albrecht via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <87r1f1jvxz.fsf@mayflower.de> : Wrote on Tue, 10 Aug 2021 14:56:31 +0200: >> `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 . #> server <3>>) [...] (window-system) (tty . "/dev/pts/3") (tty-type >> . "xterm-256color")) > > is this, by any chance, related to and fixed by > https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49877#28 I built master and I am not seeing the problem now, so this bug must have been fixed. [Both my analysis above and suggested fix seem to be wrong. I think the problem was that my init file was requiring etags at some point, which activated the error. i.e. emacs --fg-daemon -Q -l etags and emacsclient -t would have reproduced it and not the recipe i gave, sorry] From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 19 09:10:20 2021 Received: (at 47327) by debbugs.gnu.org; 19 Aug 2021 13:10:20 +0000 Received: from localhost ([127.0.0.1]:58807 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mGhoK-0005zk-FF for submit@debbugs.gnu.org; Thu, 19 Aug 2021 09:10:20 -0400 Received: from quimby.gnus.org ([95.216.78.240]:49216) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mGhoF-0005zK-5T for 47327@debbugs.gnu.org; Thu, 19 Aug 2021 09:10:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=NX0M2V7P67eDNYbIYN+EQLRS8lgTFtb9OhURgLya6hI=; b=ugzA7nhMGUDMl5uojzrRw+A7FQ QAn8iBUAn8XibTo1WKV1BGfLgYNKbmsD9Wn1WZ1OifQaUZYHLrle0GlYJSP7UKpdlMhc7EJnllsCb EM/v7Hsdj9QM82vw1+/B1zdw6T8ZynnXPVJll3SUR96uYTkusE+E34TLdspGnRI6VMjo=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mGho3-0006B0-TK; Thu, 19 Aug 2021 15:10:08 +0200 From: Lars Ingebrigtsen To: Madhu Subject: Re: bug#47327: 28.0.50; (cl-generic) eql specializer not evaluated References: <87k0pz5d6u.fsf@gmail.com> <87h7g634cz.fsf@gmail.com> <87r1f1jvxz.fsf@mayflower.de> Date: Thu, 19 Aug 2021 15:10:02 +0200 In-Reply-To: (Madhu's message of "Thu, 19 Aug 2021 17:11:34 +0530") Message-ID: <87h7fl8tsl.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Madhu writes: >> is this, by any chance, related to and fixed by >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49877#28 > > I built master and I am not seeing the problem now, so this bug must > have been fixed. Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 47327 Cc: 47327@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Madhu writes: >> is this, by any chance, related to and fixed by >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=49877#28 > > I built master and I am not seeing the problem now, so this bug must > have been fixed. And it seems like the original issue in this bug report (about making eql specialisers evaluate) works as it should, so I'm closing this bug report. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From debbugs-submit-bounces@debbugs.gnu.org Thu Aug 19 09:10:25 2021 Received: (at control) by debbugs.gnu.org; 19 Aug 2021 13:10:25 +0000 Received: from localhost ([127.0.0.1]:58810 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mGhoP-000601-M6 for submit@debbugs.gnu.org; Thu, 19 Aug 2021 09:10:25 -0400 Received: from quimby.gnus.org ([95.216.78.240]:49230) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mGhoL-0005za-MZ for control@debbugs.gnu.org; Thu, 19 Aug 2021 09:10:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=frYK3iSM7lGene/YnL62wJyxJZvY9U7FFdznwVmLmvU=; b=q3Gvk62JdwpdbCIyo/gUurfsvr hLBSc0q/fn2U8azJ3TfETOebsSqfXpqWaYG6yCTS+TJ1KNeyLHDJAEZtRZHhheZNFwmrOFJab/M+y jd+hkT/1YOB7tU1S5NIA6CfuqtzvCPQHdoF8Rh79NXP6Sm948ZRepLCuXODlUuZ8ANNc=; Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mGhoD-0006BB-T1 for control@debbugs.gnu.org; Thu, 19 Aug 2021 15:10:15 +0200 Date: Thu, 19 Aug 2021 15:10:13 +0200 Message-Id: <87fsv58tsa.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #47327 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: tags 47327 fixed close 47327 28.1 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) tags 47327 fixed close 47327 28.1 quit From unknown Sat Jun 21 10:25:15 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Fri, 17 Sep 2021 11:24:05 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator