From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#38872: 27.0.50; Keywords can be let-bound Date: Sun, 20 Sep 2020 12:36:12 +0200 Message-ID: <87zh5kpwf7.fsf@gnus.org> References: <87woa97pc8.fsf@thb.lt> <87a76n41sg.fsf@marxist.se> <871rrzmaik.fsf@igel.home> <87wo9r2fi6.fsf@marxist.se> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="25261"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Stefan Kangas , Thibault Polge , Andreas Schwab , 38872@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Sep 20 12:37:11 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kJwiU-0006TR-Dx for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 20 Sep 2020 12:37:10 +0200 Original-Received: from localhost ([::1]:40972 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kJwiT-0007eC-D4 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 20 Sep 2020 06:37:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:36282) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kJwiM-0007ds-K2 for bug-gnu-emacs@gnu.org; Sun, 20 Sep 2020 06:37:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:37268) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kJwiM-0001GA-Ap for bug-gnu-emacs@gnu.org; Sun, 20 Sep 2020 06:37:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kJwiM-00009r-7R for bug-gnu-emacs@gnu.org; Sun, 20 Sep 2020 06:37:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 20 Sep 2020 10:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38872 X-GNU-PR-Package: emacs Original-Received: via spool by 38872-submit@debbugs.gnu.org id=B38872.1600598187564 (code B ref 38872); Sun, 20 Sep 2020 10:37:02 +0000 Original-Received: (at 38872) by debbugs.gnu.org; 20 Sep 2020 10:36:27 +0000 Original-Received: from localhost ([127.0.0.1]:48814 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kJwhm-000092-Vk for submit@debbugs.gnu.org; Sun, 20 Sep 2020 06:36:27 -0400 Original-Received: from quimby.gnus.org ([95.216.78.240]:59128) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kJwhk-00008o-GJ for 38872@debbugs.gnu.org; Sun, 20 Sep 2020 06:36:25 -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=Z33M1HGwRAvPFUWx2FeoulJinm695UjHivN+wCU7Ejo=; b=eA5tUYiEOKIoObuxk9OClTL1ml HsuDcuyTFVVxyzNyguvwce3j8mvVO76gKXPR0eNZcUmhRYjjoC/7WJLS5pyheCNG/YLmm8fRMwu42 VTXhYiV1nCKdyiLtwHE5Pqn0YiTmgPgEC0smWFTgyWnvtHk3lxdubJ5zcRaXwwX+TUXk=; Original-Received: from cm-84.212.202.86.getinternet.no ([84.212.202.86] helo=xo) by quimby with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kJwhZ-0006L4-PW; Sun, 20 Sep 2020 12:36:16 +0200 X-Now-Playing: Act's _Laughter, Tears and Rage_: "Chance" In-Reply-To: (Stefan Monnier's message of "Fri, 17 Jan 2020 09:11:37 -0500") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:188486 Archived-At: Stefan Monnier writes: >>> I think that should use the same condition as set_internal, so that (let >>> ((:k :k))) still works. >> Thanks, I forgot about that case. > > We should also look at what the byte-compiler does with this code. > > I get the impression that the best/simplest course of action is to set > `declared_special` to `true` for keywords. So this would be just: diff --git a/src/lread.c b/src/lread.c index 8064bf4d0e..f465b451a9 100644 --- a/src/lread.c +++ b/src/lread.c @@ -4104,6 +4104,7 @@ intern_sym (Lisp_Object sym, Lisp_Object obarray, Lisp_Object index) { make_symbol_constant (sym); XSYMBOL (sym)->u.s.redirect = SYMBOL_PLAINVAL; + XSYMBOL (sym)->u.s.declared_special = true; SET_SYMBOL_VAL (XSYMBOL (sym), sym); } Which seems to work? "make check" still works after doing this, and the test case now fails like it should do. Some more context below. But I have to admit I don't understand why this fixes the test case. :-/ intern_sym (Lisp_Object sym, Lisp_Object obarray, Lisp_Object index) { Lisp_Object *ptr; XSYMBOL (sym)->u.s.interned = (EQ (obarray, initial_obarray) ? SYMBOL_INTERNED_IN_INITIAL_OBARRAY : SYMBOL_INTERNED); if (SREF (SYMBOL_NAME (sym), 0) == ':' && EQ (obarray, initial_obarray)) { make_symbol_constant (sym); XSYMBOL (sym)->u.s.redirect = SYMBOL_PLAINVAL; XSYMBOL (sym)->u.s.declared_special = true; SET_SYMBOL_VAL (XSYMBOL (sym), sym); } -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no