* lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside vectors

This commit is contained in:
Stefan Monnier 2020-05-11 09:53:37 -04:00
parent 703115829b
commit a69ef94e22

View file

@ -698,10 +698,15 @@ MATCH is the pattern that needs to be matched, of the form:
(dolist (binding (pcase--fgrep bindings (pop sexp))) (dolist (binding (pcase--fgrep bindings (pop sexp)))
(push binding res) (push binding res)
(setq bindings (remove binding bindings)))) (setq bindings (remove binding bindings))))
(if (vectorp sexp)
;; With backquote, code can appear within vectors as well.
;; This wouldn't be needed if we `macroexpand-all' before
;; calling pcase--fgrep, OTOH.
(pcase--fgrep bindings (mapcar #'identity sexp))
(let ((tmp (assq sexp bindings))) (let ((tmp (assq sexp bindings)))
(if tmp (if tmp
(cons tmp res) (cons tmp res)
res)))) res)))))
(defun pcase--self-quoting-p (upat) (defun pcase--self-quoting-p (upat)
(or (keywordp upat) (integerp upat) (stringp upat))) (or (keywordp upat) (integerp upat) (stringp upat)))