From: Stefan Monnier Date: Mon, 17 Apr 2023 22:15:45 +0000 (-0400) Subject: * lisp/emacs-lisp/gv.el (error): Add gv-expander X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=b0b968d9af3bfbb7e145e936997901595a843c24;p=emacs.git * 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`. --- 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