summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eval.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/eval.c b/src/eval.c
index f625258229e..45effae295c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -807,8 +807,16 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */)
sym = Fcar (args);
if (SYMBOL_CONSTANT_P (sym))
- error ("Constant symbol `%s' specified in defvar",
- SDATA (SYMBOL_NAME (sym)));
+ {
+ /* For updward compatibility, allow (defvar :foo (quote :foo)). */
+ tem = Fcar (Fcdr (args));
+ if (! (CONSP (tem)
+ && EQ (XCAR (tem), Qquote)
+ && CONSP (XCDR (tem))
+ && EQ (XCAR (XCDR (tem)), sym)))
+ error ("Constant symbol `%s' specified in defvar",
+ SDATA (SYMBOL_NAME (sym)));
+ }
tail = Fcdr (args);
if (!NILP (Fcdr (Fcdr (tail))))