Explicitly disallow named-let in code using dynamic binding
There is no point in permitting named-let to be used in dynbound code; our code transforms are simply not valid in that context, and it's not worth the trouble to make it work (to the extent that it is at all possible). (Bug#59576) * lisp/emacs-lisp/subr-x.el (named-let): Error if used with dynamic binding. * doc/lispref/variables.texi (Local Variables): Amend manual.
This commit is contained in:
parent
f01a94fc58
commit
c21103bb76
2 changed files with 7 additions and 3 deletions
|
@ -351,8 +351,8 @@ A function call is in the tail position if it's the very last thing
|
|||
done so that the value returned by the call is the value of @var{body}
|
||||
itself, as is the case in the recursive call to @code{sum} above.
|
||||
|
||||
@strong{Warning:} @code{named-let} works as expected only when
|
||||
lexical-binding is enabled. @xref{Lexical Binding}.
|
||||
@code{named-let} can only be used when lexical-binding is enabled.
|
||||
@xref{Lexical Binding}.
|
||||
@end defspec
|
||||
|
||||
Here is a complete list of the other facilities that create local
|
||||
|
|
|
@ -312,9 +312,13 @@ it makes no sense to convert it to a string using
|
|||
Like `let', bind variables in BINDINGS and then evaluate BODY,
|
||||
but with the twist that BODY can evaluate itself recursively by
|
||||
calling NAME, where the arguments passed to NAME are used
|
||||
as the new values of the bound variables in the recursive invocation."
|
||||
as the new values of the bound variables in the recursive invocation.
|
||||
|
||||
This construct can only be used with lexical binding."
|
||||
(declare (indent 2) (debug (symbolp (&rest (symbolp form)) body)))
|
||||
(require 'cl-lib)
|
||||
(unless lexical-binding
|
||||
(error "`named-let' requires lexical binding"))
|
||||
(let ((fargs (mapcar (lambda (b) (if (consp b) (car b) b)) bindings))
|
||||
(aargs (mapcar (lambda (b) (if (consp b) (cadr b))) bindings)))
|
||||
;; According to the Scheme semantics of named let, `name' is not in scope
|
||||
|
|
Loading…
Add table
Reference in a new issue