+2013-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * eval.texi (Special Forms): Mention 'lambda'. Also, say that
+ non-well-formed expressions result in unspecified behavior, though
+ Emacs will not crash.
+
2013-07-22 Michael Albinus <michael.albinus@gmx.de>
* files.texi (Magic File Names): Add file-notify-add-watch,
and which are used without evaluation. Whether a particular argument is
evaluated may depend on the results of evaluating other arguments.
+ If an expression's first symbol is that of a special form, the
+expression should follow the rules of that special form; otherwise,
+Emacs's behavior is not well-defined (though it will not crash). For
+example, @code{((lambda (x) x . 3) 4)} contains a subexpression that
+begins with @code{lambda} but is not a well-formed @code{lambda}
+expression, so Emacs may signal an error, or may return 3 or 4 or
+@code{nil}, or may behave in other ways.
+
Here is a list, in alphabetical order, of all of the special forms in
Emacs Lisp with a reference to where each is described.
@item interactive
@pxref{Interactive Call}
+@item lambda
+@pxref{Lambda Expressions}
+
@item let
@itemx let*
@pxref{Local Variables}
** `visited-file-modtime' now returns -1 for nonexistent files.
Formerly it returned a list (-1 LOW USEC PSEC), but this was ambiguous
in the presence of files with negative time stamps.
-
-** Special forms with implied progn now check for proper lists.
-Starting in Emacs 21.4, a special form with an implied progn of an
-improper list ignored the trailing value, treating it as nil. For
-example, (cond (t (message "hello") . "there")) ignored the "there".
-This inadvertent change to Emacs's behavior has been reverted, and
-Emacs now signals an error for these improper forms, as it did in
-version 21.3 and earlier.
\f
* Lisp Changes in Emacs 24.4
+2013-07-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ * eval.c (Fprogn): Do not check that BODY is a proper list.
+ This undoes the previous change. The check slows down the
+ interpreter, and is not needed to prevent a crash. See
+ <http://lists.gnu.org/archive/html/emacs-devel/2013-07/msg00693.html>.
+
2013-07-23 Glenn Morris <rgm@gnu.org>
* Makefile.in ($(etc)/DOC, temacs$(EXEEXT)): Ensure etc/ exists.
body = XCDR (body);
}
- if (!NILP (body))
- {
- /* This can happen if functions like Fcond are the caller. */
- wrong_type_argument (Qlistp, body);
- }
-
UNGCPRO;
return val;
}