[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 9ed0b55: * cl-macs-tests.el (cl-macs-test--symbol-m
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] master 9ed0b55: * cl-macs-tests.el (cl-macs-test--symbol-macrolet): New test |
Date: |
Thu, 16 May 2019 17:16:42 -0400 (EDT) |
branch: master
commit 9ed0b55848ce8a3049fd82e42cd9ea274410d426
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>
* cl-macs-tests.el (cl-macs-test--symbol-macrolet): New test
---
test/lisp/emacs-lisp/cl-macs-tests.el | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/test/lisp/emacs-lisp/cl-macs-tests.el
b/test/lisp/emacs-lisp/cl-macs-tests.el
index 989553b..09ce660 100644
--- a/test/lisp/emacs-lisp/cl-macs-tests.el
+++ b/test/lisp/emacs-lisp/cl-macs-tests.el
@@ -513,4 +513,21 @@ collection clause."
(macroexpand '(cl-defstruct (hash-table (:predicate hash-table-p))))
:type 'wrong-type-argument))
+(ert-deftest cl-macs-test--symbol-macrolet ()
+ ;; A `setq' shouldn't be converted to a `setf' just because it occurs within
+ ;; a symbol-macrolet!
+ (should-error
+ ;; Use `eval' so the error is signaled when running the test rather than
+ ;; when macroexpanding it.
+ (eval '(let ((l (list 1))) (cl-symbol-macrolet ((x 1)) (setq (car l) 0)))))
+ ;; Make sure `gv-synthetic-place' isn't macro-expanded before `setf' gets to
+ ;; see its `gv-expander'.
+ (should (equal (let ((l '(0)))
+ (let ((cl (car l)))
+ (cl-symbol-macrolet
+ ((p (gv-synthetic-place cl (lambda (v) `(setcar l
,v)))))
+ (cl-incf p)))
+ l)
+ '(1))))
+
;;; cl-macs-tests.el ends here
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 9ed0b55: * cl-macs-tests.el (cl-macs-test--symbol-macrolet): New test,
Stefan Monnier <=