]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/pcase.el (pcase--split-pred): Re-fix bug#14773
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 1 Mar 2021 19:07:05 +0000 (14:07 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 1 Mar 2021 19:07:05 +0000 (14:07 -0500)
Adjust to calling convention of `macroexp--fgrep`.

lisp/emacs-lisp/pcase.el
test/lisp/emacs-lisp/pcase-tests.el

index 95e5dd3ba014675753c880c378ea5296238c21d7..b1e1305edfe7944182a079a6c9e7faae0474e145 100644 (file)
@@ -661,7 +661,7 @@ A and B can be one of:
                ;; run, but we don't have the environment in which `pat' will
                ;; run, so we can't do a reliable verification.  But let's try
                ;; and catch at least the easy cases such as (bug#14773).
-               (not (macroexp--fgrep (mapcar #'car vars) (cadr upat)))))
+               (not (macroexp--fgrep vars (cadr upat)))))
       '(:pcase--succeed . :pcase--fail))
      ;; In case PAT is of the form (pred (not PRED))
      ((and (eq 'pred (car-safe pat)) (eq 'not (car-safe (cadr pat))))
index e6f4c0975043415a3f6b355f88f2a6fee1cb9a60..14384112b34b6defdae6df50954fb0e5ff080c31 100644 (file)
 (ert-deftest pcase-tests-vectors ()
   (should (equal (pcase [1 2] (`[,x] 1) (`[,x ,y] (+ x y))) 3)))
 
+(ert-deftest pcase-tests-bug14773 ()
+  (let ((f (lambda (x)
+             (pcase 'dummy
+               ((and (let var x) (guard var)) 'left)
+               ((and (let var (not x)) (guard var)) 'right)))))
+    (should (equal (funcall f t) 'left))
+    (should (equal (funcall f nil) 'right))))
+
 ;; Local Variables:
 ;; no-byte-compile: t
 ;; End: