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.
This commit is contained in:
Thien-Thi Nguyen 2018-05-21 17:16:31 +02:00
parent 7e8227ed68
commit 4d7e54acff
4 changed files with 11 additions and 9 deletions

View file

@ -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

View file

@ -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.

View file

@ -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))))

View file

@ -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