Mercurial > emacs
diff src/eval.c @ 64638:8cbdc86a4f55
(Fdefvar): Allow (defvar enable-multibyte-characters).
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Tue, 26 Jul 2005 16:28:44 +0000 |
| parents | 9e774d6510f1 |
| children | a0d1312ede66 890cc78a5a24 |
line wrap: on
line diff
--- a/src/eval.c Tue Jul 26 16:07:55 2005 +0000 +++ b/src/eval.c Tue Jul 26 16:28:44 2005 +0000 @@ -807,18 +807,6 @@ register Lisp_Object sym, tem, tail; sym = Fcar (args); - if (SYMBOL_CONSTANT_P (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)))) error ("Too many arguments"); @@ -826,6 +814,18 @@ tem = Fdefault_boundp (sym); if (!NILP (tail)) { + if (SYMBOL_CONSTANT_P (sym)) + { + /* For upward compatibility, allow (defvar :foo (quote :foo)). */ + Lisp_Object tem = Fcar (tail); + 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))); + } + if (NILP (tem)) Fset_default (sym, Feval (Fcar (tail))); else
