emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master dc2168e: Make (let ((:key 'foo)) :key) signal an error in lexical


From: Lars Ingebrigtsen
Subject: master dc2168e: Make (let ((:key 'foo)) :key) signal an error in lexical elisp, too
Date: Sun, 20 Sep 2020 15:31:03 -0400 (EDT)

branch: master
commit dc2168ebf25b15a4bc960e17f65ce5117cc77467
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make (let ((:key 'foo)) :key) signal an error in lexical elisp, too
    
    * src/lread.c (intern_sym): Mark keywords as special (bug#38872).
---
 src/lread.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/lread.c b/src/lread.c
index 8064bf4..4b788e9 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -4104,6 +4104,9 @@ intern_sym (Lisp_Object sym, Lisp_Object obarray, 
Lisp_Object index)
     {
       make_symbol_constant (sym);
       XSYMBOL (sym)->u.s.redirect = SYMBOL_PLAINVAL;
+      /* Mark keywords as special.  This makes (let ((:key 'foo)) ...)
+        in lexically bound elisp signal an error, as documented.  */
+      XSYMBOL (sym)->u.s.declared_special = true;
       SET_SYMBOL_VAL (XSYMBOL (sym), sym);
     }
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]