]> code.delx.au - gnu-emacs/commitdiff
(Fdefvar): Allow defvaring a constant to itself quoted.
authorRichard M. Stallman <rms@gnu.org>
Sat, 9 Jul 2005 03:42:43 +0000 (03:42 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sat, 9 Jul 2005 03:42:43 +0000 (03:42 +0000)
src/eval.c

index f625258229e98569eac3b6cbcdba0bb65c86627a..45effae295ca0638644271c5e86f6a3c88b37fe2 100644 (file)
@@ -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))))