[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master b0b968d9af3: * lisp/emacs-lisp/gv.el (error): Add gv-expander
From: |
Stefan Monnier |
Subject: |
master b0b968d9af3: * lisp/emacs-lisp/gv.el (error): Add gv-expander |
Date: |
Mon, 17 Apr 2023 18:15:52 -0400 (EDT) |
branch: master
commit b0b968d9af3bfbb7e145e936997901595a843c24
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
* 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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master b0b968d9af3: * lisp/emacs-lisp/gv.el (error): Add gv-expander,
Stefan Monnier <=