Subject: Re: bug#38872: 27.0.50; Keywords can be let-bound

From: Eli Zaretskii <[email-masked]>
Date: Sun, 20 Sep 2020 13:55:36 +0300

> From: Lars Ingebrigtsen <[email-masked]>
> Date: Sun, 20 Sep 2020 12:36:12 +0200
> Cc: Stefan Kangas <[email-masked]>, Thibault Polge <[email-masked]>,
>  Andreas Schwab <[email-masked]>, [email-masked]
> 
> Stefan Monnier <[email-masked]> writes:
> 
> > 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.

I see you've installed this change, but the log message doesn''t
mention it, nor its reason.  can we have some explanation in the
comments in the code, please?