diff options
author | Alan Mackenzie <acm@muc.de> | 2024-10-28 16:35:27 +0000 |
---|---|---|
committer | Alan Mackenzie <acm@muc.de> | 2024-10-28 16:35:27 +0000 |
commit | fb5915665522f747daa8dfa11e91dc406d18edb7 (patch) | |
tree | 64a0c23a4810486d1b273a533614b927a88d14fb /lisp/emacs-lisp/pcase.el | |
parent | c05a13ef0dc69497e275b627dbc8e2b25ece7711 (diff) | |
download | emacs-fb5915665522f747daa8dfa11e91dc406d18edb7.tar.gz emacs-fb5915665522f747daa8dfa11e91dc406d18edb7.tar.bz2 emacs-fb5915665522f747daa8dfa11e91dc406d18edb7.zip |
Call PF correctly from pcase--edebug-match-pat-args
Also correct a doc string and insert commentary. This fixes
bug#74052.
* lisp/emacs-lisp/edebug.el
(edebug--match-&-spec-op <&interpose>): Correct and complete
the doc string, which now says MUST call exactly once, and
documents the return values of FUN, PF and
edebug--match-&-spec-op. Also remove an unneeded `(...)
construct.
* lisp/emacs-lisp/pcase.el (pcase--edebug-match-pat-args): Call
PF also for the main cases handled.
Diffstat (limited to 'lisp/emacs-lisp/pcase.el')
-rw-r--r-- | lisp/emacs-lisp/pcase.el | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index 898d460c144..9812621d50e 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -84,14 +84,17 @@ (defun pcase--edebug-match-pat-args (head pf) ;; (cl-assert (null (cdr head))) (setq head (car head)) - (or (alist-get head '((quote sexp) - (or &rest pcase-PAT) - (and &rest pcase-PAT) - (guard form) - (pred &or ("not" pcase-FUN) pcase-FUN) - (app pcase-FUN pcase-PAT))) - (let ((me (pcase--get-macroexpander head))) - (funcall pf (and me (symbolp me) (edebug-get-spec me)))))) + (let ((specs + (or + (alist-get head '((quote sexp) + (or &rest pcase-PAT) + (and &rest pcase-PAT) + (guard form) + (pred &or ("not" pcase-FUN) pcase-FUN) + (app pcase-FUN pcase-PAT))) + (let ((me (pcase--get-macroexpander head))) + (and me (symbolp me) (edebug-get-spec me)))))) + (funcall pf specs))) (defun pcase--get-macroexpander (s) "Return the macroexpander for pcase pattern head S, or nil." |