diff src/eval.c @ 4795:084056f46755

#'functionp gives nil for special forms, as in CL and GNU Emacs 23. src/ChangeLog addition: 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * eval.c (Ffunctionp): Special forms no longer give t in this function, in accordance with recent GNU Emacs and with Common Lisp. tests/ChangeLog addition: 2010-01-01 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test #'functionp, making sure it gives nil for special forms.
author Aidan Kehoe <kehoea@parhasard.net>
date Fri, 01 Jan 2010 00:21:07 +0000
parents 17f7e9191c0b
children a98ca4640147
line wrap: on
line diff
--- a/src/eval.c	Thu Dec 31 15:47:03 2009 +0000
+++ b/src/eval.c	Fri Jan 01 00:21:07 2010 +0000
@@ -4144,7 +4144,9 @@
   if (SYMBOLP (object))
     object = indirect_function (object, 0);
 
-  if (COMPILED_FUNCTIONP (object) || SUBRP (object))
+  if (COMPILED_FUNCTIONP (object)
+      || (SUBRP (object)
+	  && (XSUBR (object)->max_args != UNEVALLED)))
     return Qt;
   if (CONSP (object))
     {
@@ -4152,7 +4154,8 @@
       if (EQ (car, Qlambda))
 	return Qt;
       if (EQ (car, Qautoload)
-	  && NILP (Fcar_safe (Fcdr_safe (Fcdr_safe (Fcdr_safe (XCDR (object)))))))
+	  && NILP (Fcar_safe (Fcdr_safe(Fcdr_safe
+					(Fcdr_safe (XCDR (object)))))))
 	return Qt;
     }
   return Qnil;