From b0b968d9af3bfbb7e145e936997901595a843c24 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 17 Apr 2023 18:15:45 -0400 Subject: [PATCH] * lisp/emacs-lisp/gv.el (error): Add gv-expander This fixes incorrect expansion of (setf (case-exhaustive ..) ..), as found for example in `elpa-admin.el`. --- lisp/emacs-lisp/gv.el | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el index ac001af06bd..6c3036da2f2 100644 --- a/lisp/emacs-lisp/gv.el +++ b/lisp/emacs-lisp/gv.el @@ -639,6 +639,13 @@ REF must have been previously obtained with `gv-ref'." ;;; Generalized variables. +;; You'd think noone would write `(setf (error ...) ..)' but it +;; appears naturally as the result of macroexpansion of things like +;; (setf (case-exhaustive ...)). +;; We could generalize this to `throw' and `signal', but it seems +;; preferable to wait until there's a concrete need. +(gv-define-expander error (lambda (_do &rest args) `(error . ,args))) + ;; Some Emacs-related place types. (gv-define-simple-setter buffer-file-name set-visited-file-name t) (make-obsolete-generalized-variable -- 2.39.2