diff options
author | Earl Hyatt <okamsn@protonmail.com> | 2021-08-11 23:54:31 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-08-11 23:54:31 +0200 |
commit | 2f90fa19b8fdc70303232d389553afa524c72509 (patch) | |
tree | 1d544d5e950d09542eb78e41083c920af35a310e /test/lisp/emacs-lisp | |
parent | 3b5f8ab0d06f6c39aaa716b6279c2ceb4bfc5b14 (diff) | |
download | emacs-2f90fa19b8fdc70303232d389553afa524c72509.tar.gz emacs-2f90fa19b8fdc70303232d389553afa524c72509.tar.bz2 emacs-2f90fa19b8fdc70303232d389553afa524c72509.zip |
Add a `pcase-setq' macro
* doc/lispref/control.texi (Destructuring with pcase Patterns):
Document this macro.
* lisp/emacs-lisp/pcase.el (pcase-setq): New macro. This macro is
the 'setq' equivalent of 'pcase-let'.
* test/lisp/emacs-lisp/pcase-tests.el (pcase-setq): Test this new
macro. (bug#49809).
Diffstat (limited to 'test/lisp/emacs-lisp')
-rw-r--r-- | test/lisp/emacs-lisp/pcase-tests.el | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/pcase-tests.el b/test/lisp/emacs-lisp/pcase-tests.el index 02d3878ad08..67882d00d86 100644 --- a/test/lisp/emacs-lisp/pcase-tests.el +++ b/test/lisp/emacs-lisp/pcase-tests.el @@ -110,4 +110,52 @@ (should-error (pcase 1 ((cl-type notatype) 'integer)))) +(ert-deftest pcase-setq () + (should (equal (let (a b) + (pcase-setq `(,a ,b) nil) + (list a b)) + (list nil nil))) + + (should (equal (let (a b) + (pcase-setq `((,a) (,b)) '((1) (2))) + (list a b)) + (list 1 2))) + + (should (equal (list 'unset 'unset) + (let ((a 'unset) + (b 'unset)) + (pcase-setq `(,a ,b) nil) + (list a b)))) + + (should (equal (let (a b) + (pcase-setq `[,a ,b] [1 2]) + (list a b)) + '(1 2))) + + (should (equal (let (a b) + (pcase-setq a 1 b 2) + (list a b)) + '(1 2))) + + (should (= (let (a) + (pcase-setq a 1 `(,a) '(2)) + a) + 2)) + + (should (equal (let (array list-item array-copy) + (pcase-setq (or `(,list-item) array) [1 2 3] + array-copy array + ;; This re-sets `array' to nil. + (or `(,list-item) array) '(4)) + (list array array-copy list-item)) + '(nil [1 2 3] 4))) + + (let ((a nil)) + (should-error (pcase-setq a 1 b) + :type '(wrong-number-of-arguments)) + (should (eq a nil))) + + (should-error (pcase-setq a) + :type '(wrong-number-of-arguments))) + ;;; pcase-tests.el ends here. |