comparison 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
comparison
equal deleted inserted replaced
4794:8484c6c76837 4795:084056f46755
4142 (object)) 4142 (object))
4143 { 4143 {
4144 if (SYMBOLP (object)) 4144 if (SYMBOLP (object))
4145 object = indirect_function (object, 0); 4145 object = indirect_function (object, 0);
4146 4146
4147 if (COMPILED_FUNCTIONP (object) || SUBRP (object)) 4147 if (COMPILED_FUNCTIONP (object)
4148 || (SUBRP (object)
4149 && (XSUBR (object)->max_args != UNEVALLED)))
4148 return Qt; 4150 return Qt;
4149 if (CONSP (object)) 4151 if (CONSP (object))
4150 { 4152 {
4151 Lisp_Object car = XCAR (object); 4153 Lisp_Object car = XCAR (object);
4152 if (EQ (car, Qlambda)) 4154 if (EQ (car, Qlambda))
4153 return Qt; 4155 return Qt;
4154 if (EQ (car, Qautoload) 4156 if (EQ (car, Qautoload)
4155 && NILP (Fcar_safe (Fcdr_safe (Fcdr_safe (Fcdr_safe (XCDR (object))))))) 4157 && NILP (Fcar_safe (Fcdr_safe(Fcdr_safe
4158 (Fcdr_safe (XCDR (object)))))))
4156 return Qt; 4159 return Qt;
4157 } 4160 }
4158 return Qnil; 4161 return Qnil;
4159 } 4162 }
4160 4163