From bbb85eff4923d33a5271e885faab92d3546db0c0 Mon Sep 17 00:00:00 2001 From: Michael Heerdegen Date: Thu, 26 Oct 2017 12:57:55 +0200 Subject: [PATCH] * 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. --- lisp/emacs-lisp/thunk.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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) -- 2.39.2