From: Stefan Monnier Date: Mon, 20 Feb 2023 22:11:08 +0000 (-0500) Subject: * list/emacs-lisp/cconv.el (cconv-make-interpreted-closure): Tweak docstring X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=43a6b3f52315ed1c9e339010ef7aa64c8bf0dc64;p=emacs.git * list/emacs-lisp/cconv.el (cconv-make-interpreted-closure): Tweak docstring --- diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el index 940a1045625..ad9d8ab0a51 100644 --- a/lisp/emacs-lisp/cconv.el +++ b/lisp/emacs-lisp/cconv.el @@ -463,7 +463,7 @@ places where they originally did not directly appear." ; first element is lambda expression (`(,(and `(lambda . ,_) fun) . ,args) ;; FIXME: it's silly to create a closure just to call it. - ;; Running byte-optimize-form earlier will resolve this. + ;; Running byte-optimize-form earlier would resolve this. `(funcall ,(cconv-convert `(function ,fun) env extend) ,@(mapcar (lambda (form) @@ -878,14 +878,14 @@ lexically and dynamically bound symbols actually used by FORM." (cons fvs dyns))))) (defun cconv-make-interpreted-closure (fun env) - ;; FIXME: I don't know what "This function is evaluated both at - ;; compile time and run time" is intended to mean here. "Make a closure for the interpreter. -This function is evaluated both at compile time and run time. -FUN, the closure's function, must be a lambda form. -ENV, the closure's environment, is a mixture of lexical bindings of the form -\(SYMBOL . VALUE) and symbols which indicate dynamic bindings of those -symbols." +This is intended to be called at runtime by the ELisp interpreter (when +the code has not been compiled). +FUN is the closure's source code, must be a lambda form. +ENV is the runtime representation of the lexical environment, +i.e. a list whose elements can be either plain symbols (which indicate +that this symbol should use dynamic scoping) or pairs (SYMBOL . VALUE) +for the lexical bindings." (cl-assert (eq (car-safe fun) 'lambda)) (let ((lexvars (delq nil (mapcar #'car-safe env)))) (if (or (null lexvars)