Commit 4d7e54ac authored by Thien-Thi Nguyen's avatar Thien-Thi Nguyen

Use EXPVAL in docstrings of patterns defined using pcase-defmacro

Suggested by Drew Adams (Bug#31311).

* lisp/emacs-lisp/cl-macs.el (cl-struct): ...here.
* lisp/emacs-lisp/eieio.el (eieio): Likewise.
* lisp/emacs-lisp/radix-tree.el (radix-tree-leaf): Likewise.
* lisp/emacs-lisp/rx.el (rx): Likewise.
parent 7e8227ed
...@@ -2887,10 +2887,10 @@ non-nil value, that slot cannot be set via `setf'. ...@@ -2887,10 +2887,10 @@ non-nil value, that slot cannot be set via `setf'.
;;;###autoload ;;;###autoload
(pcase-defmacro cl-struct (type &rest fields) (pcase-defmacro cl-struct (type &rest fields)
"Pcase patterns to match cl-structs. "Pcase patterns that match cl-struct EXPVAL of type TYPE.
Elements of FIELDS can be of the form (NAME PAT) in which case the contents of Elements of FIELDS can be of the form (NAME PAT) in which case the
field NAME is matched against PAT, or they can be of the form NAME which contents of field NAME is matched against PAT, or they can be of
is a shorthand for (NAME NAME)." the form NAME which is a shorthand for (NAME NAME)."
(declare (debug (sexp &rest [&or (sexp pcase-PAT) sexp]))) (declare (debug (sexp &rest [&or (sexp pcase-PAT) sexp])))
`(and (pred (pcase--flip cl-typep ',type)) `(and (pred (pcase--flip cl-typep ',type))
,@(mapcar ,@(mapcar
......
...@@ -346,10 +346,10 @@ variable name of the same name as the slot." ...@@ -346,10 +346,10 @@ variable name of the same name as the slot."
index)))) index))))
(pcase-defmacro eieio (&rest fields) (pcase-defmacro eieio (&rest fields)
"Pcase patterns to match EIEIO objects. "Pcase patterns that match EIEIO object EXPVAL.
Elements of FIELDS can be of the form (NAME PAT) in which case the contents of Elements of FIELDS can be of the form (NAME PAT) in which case the
field NAME is matched against PAT, or they can be of the form NAME which contents of field NAME is matched against PAT, or they can be of
is a shorthand for (NAME NAME)." the form NAME which is a shorthand for (NAME NAME)."
(declare (debug (&rest [&or (sexp pcase-PAT) sexp]))) (declare (debug (&rest [&or (sexp pcase-PAT) sexp])))
(let ((is (make-symbol "table"))) (let ((is (make-symbol "table")))
;; FIXME: This generates a horrendous mess of redundant let bindings. ;; FIXME: This generates a horrendous mess of redundant let bindings.
......
...@@ -196,6 +196,8 @@ If not found, return nil." ...@@ -196,6 +196,8 @@ If not found, return nil."
(eval-and-compile (eval-and-compile
(pcase-defmacro radix-tree-leaf (vpat) (pcase-defmacro radix-tree-leaf (vpat)
"Build a `pcase' pattern that matches radix-tree leaf EXPVAL.
VPAT is a `pcase' pattern to extract the value."
;; FIXME: We'd like to use a negative pattern (not consp), but pcase ;; FIXME: We'd like to use a negative pattern (not consp), but pcase
;; doesn't support it. Using `atom' works but generates sub-optimal code. ;; doesn't support it. Using `atom' works but generates sub-optimal code.
`(or `(t . ,,vpat) (and (pred atom) ,vpat)))) `(or `(t . ,,vpat) (and (pred atom) ,vpat))))
......
...@@ -1177,7 +1177,7 @@ enclosed in `(and ...)'. ...@@ -1177,7 +1177,7 @@ enclosed in `(and ...)'.
(pcase-defmacro rx (&rest regexps) (pcase-defmacro rx (&rest regexps)
"Build a `pcase' pattern matching `rx' regexps. "Build a `pcase' pattern matching `rx' regexps.
The REGEXPS are interpreted as by `rx'. The pattern matches if The REGEXPS are interpreted as by `rx'. The pattern matches if
the regular expression so constructed matches the object, as if the regular expression so constructed matches EXPVAL, as if
by `string-match'. by `string-match'.
In addition to the usual `rx' constructs, REGEXPS can contain the In addition to the usual `rx' constructs, REGEXPS can contain the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment