Subject: bug#40693: 28.0.50; json-encode-alist changes alist

From: Paul Eggert <[email-masked]>
Date: Sun, 19 Apr 2020 13:35:25 -0700

> I still find it surprising that a back-quoted list would behave that way

Me too. This should be documented better, and to try to do that I installed the 
attached patch into the emacs-27 branch (this should appear on the master branch 
after the next merge).
>From 81e7d7f111872c9f2aaf8885db50a22ed746d7b5 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Sun, 19 Apr 2020 09:37:51 -0700
Subject: [PATCH] Document that quoting yields constants

* doc/lispref/eval.texi (Quoting, Backquote):
Mention that quoted expressions yield a constant (Bug#40693).
---
 doc/lispref/eval.texi | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index f6f36ed342..46cfab164b 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -558,6 +558,7 @@ and vectors.)
 
 @defspec quote object
 This special form returns @var{object}, without evaluating it.
+The returned value is a constant, and should not be modified.
 @end defspec
 
 @cindex @samp{'} for quoting
@@ -612,10 +613,12 @@ only part of a list, while computing and substituting other parts.
 
   @dfn{Backquote constructs} allow you to quote a list, but
 selectively evaluate elements of that list.  In the simplest case, it
-is identical to the special form @code{quote}
+is identical to the special form
 @iftex
+@code{quote}.
 @end iftex
 @ifnottex
+@code{quote}
 (described in the previous section; @pxref{Quoting}).
 @end ifnottex
 For example, these two forms yield identical results:
@@ -693,6 +696,9 @@ Here are some examples:
 @end group
 @end example
 
+If a subexpression of a backquote construct has no substitutions or
+splices, it acts like @code{quote} in that it yields a constant that
+should not be modified.
 
 @node Eval
 @section Eval
-- 
2.17.1