emacs-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]