Renege on anonymous &rest (bug#50268, bug#50720)
Allowing &rest without a variable name following turned out not to be very useful, and it never worked properly. Disallow it. * lisp/emacs-lisp/bytecomp.el (byte-compile-check-lambda-list): * src/eval.c (funcall_lambda): Signal error for &rest without variable name. * doc/lispref/functions.texi (Argument List): Adjust manual. * etc/NEWS (file): Announce. * test/src/eval-tests.el (eval-tests--bugs-24912-and-24913): Extend test, also checking with and without lexical binding. (eval-tests-accept-empty-optional-rest): Reduce to... (eval-tests-accept-empty-optional): ...this, again checking with and without lexical binding.
This commit is contained in:
parent
80fddff5d6
commit
ed02b88bba
5 changed files with 48 additions and 27 deletions
|
@ -2930,6 +2930,8 @@ If FORM is a lambda or a macro, byte-compile it as a function."
|
|||
(macroexp--const-symbol-p arg t))
|
||||
(error "Invalid lambda variable %s" arg))
|
||||
((eq arg '&rest)
|
||||
(unless (cdr list)
|
||||
(error "&rest without variable name"))
|
||||
(when (cddr list)
|
||||
(error "Garbage following &rest VAR in lambda-list"))
|
||||
(when (memq (cadr list) '(&optional &rest))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue