From: Michael Heerdegen Date: Thu, 26 Oct 2017 10:57:55 +0000 (+0200) Subject: * lisp/emacs-lisp/thunk.el: Assert lexical-binding X-Git-Tag: emacs-27.0.90~6201 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=bbb85eff4923d33a5271e885faab92d3546db0c0;p=emacs.git * lisp/emacs-lisp/thunk.el: Assert lexical-binding This fixes Bug#28990. Also add a note to the file header that creating thunks requires lexical-binding. (thunk-delay): `cl-assert' lexical-binding. --- diff --git a/lisp/emacs-lisp/thunk.el b/lisp/emacs-lisp/thunk.el index bb6d277c270..371d10444b2 100644 --- a/lisp/emacs-lisp/thunk.el +++ b/lisp/emacs-lisp/thunk.el @@ -29,9 +29,9 @@ ;; Thunk provides functions and macros to delay the evaluation of ;; forms. ;; -;; Use `thunk-delay' to delay the evaluation of a form, and -;; `thunk-force' to evaluate it. The result of the evaluation is -;; cached, and only happens once. +;; Use `thunk-delay' to delay the evaluation of a form (requires +;; lexical-binding), and `thunk-force' to evaluate it. The result of +;; the evaluation is cached, and only happens once. ;; ;; Here is an example of a form which evaluation is delayed: ;; @@ -44,9 +44,12 @@ ;;; Code: +(eval-when-compile (require 'cl-macs)) + (defmacro thunk-delay (&rest body) "Delay the evaluation of BODY." (declare (debug t)) + (cl-assert lexical-binding) (let ((forced (make-symbol "forced")) (val (make-symbol "val"))) `(let (,forced ,val)