From f467478832a9041017653a07619acfdb9406ad99 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Tue, 12 Apr 2022 08:48:18 -0700 Subject: [PATCH] Fix eager macroexpansion cycle in cl-once-only * lisp/emacs-lisp/cl-macs.el (cl-once-only): Use different cl-loop syntax, with no functional change, but such that the loop does not expand into cl-psetq. --- lisp/emacs-lisp/cl-macs.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index af8855516c..364b5120a0 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -2473,11 +2473,11 @@ cl-once-only ;; We require this explicit call to `list' rather than using ;; (,,@(cl-loop ...)) due to a limitation of Elisp's backquote. `(let ,(list - ,@(cl-loop for name in names and gensym in our-gensyms + ,@(cl-loop for name in names for gensym in our-gensyms for to-eval = (or (cadr name) (car name)) collect ``(,,gensym ,,to-eval))) ;; During macroexpansion, bind each NAME to its gensym. - ,(let ,(cl-loop for name in names and gensym in our-gensyms + ,(let ,(cl-loop for name in names for gensym in our-gensyms collect `(,(car name) ,gensym)) ,@body))))) -- 2.30.2