summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/pcase.el
diff options
context:
space:
mode:
authorAlan Mackenzie <acm@muc.de>2024-10-28 16:35:27 +0000
committerAlan Mackenzie <acm@muc.de>2024-10-28 16:35:27 +0000
commitfb5915665522f747daa8dfa11e91dc406d18edb7 (patch)
tree64a0c23a4810486d1b273a533614b927a88d14fb /lisp/emacs-lisp/pcase.el
parentc05a13ef0dc69497e275b627dbc8e2b25ece7711 (diff)
downloademacs-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.el19
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."