Document return value of pcase (Bug#30425)
* doc/lispref/control.texi (Pattern matching case statement): * lisp/emacs-lisp/pcase.el (pcase): State that pcase returns nil if no patterns match. (pcase-exhaustive): State that an error is signaled if no patterns match.
This commit is contained in:
parent
8a2466ff72
commit
e50196e8a9
2 changed files with 7 additions and 3 deletions
|
@ -317,7 +317,8 @@ list of the form @code{(@var{pattern} @var{body-forms}@dots{})}.
|
||||||
@var{pattern} of each clause, in textual order. If the value matches,
|
@var{pattern} of each clause, in textual order. If the value matches,
|
||||||
the clause succeeds; @code{pcase} then evaluates its @var{body-forms},
|
the clause succeeds; @code{pcase} then evaluates its @var{body-forms},
|
||||||
and returns the value of the last of @var{body-forms}. Any remaining
|
and returns the value of the last of @var{body-forms}. Any remaining
|
||||||
@var{clauses} are ignored.
|
@var{clauses} are ignored. If no clauses match, then the @code{pcase}
|
||||||
|
form evaluates to @code{nil}.
|
||||||
|
|
||||||
The @var{pattern} part of a clause can be of one of two types:
|
The @var{pattern} part of a clause can be of one of two types:
|
||||||
@dfn{QPattern}, a pattern quoted with a backquote; or a
|
@dfn{QPattern}, a pattern quoted with a backquote; or a
|
||||||
|
|
|
@ -118,7 +118,9 @@ two element list, binding its elements to symbols named `foo' and
|
||||||
|
|
||||||
A significant difference from `cl-destructuring-bind' is that, if
|
A significant difference from `cl-destructuring-bind' is that, if
|
||||||
a pattern match fails, the next case is tried until either a
|
a pattern match fails, the next case is tried until either a
|
||||||
successful match is found or there are no more cases.
|
successful match is found or there are no more cases. The CODE
|
||||||
|
expression corresponding to the matching pattern determines the
|
||||||
|
return value. If there is no match the returned value is nil.
|
||||||
|
|
||||||
Another difference is that pattern elements may be quoted,
|
Another difference is that pattern elements may be quoted,
|
||||||
meaning they must match exactly: The pattern \\='(foo bar)
|
meaning they must match exactly: The pattern \\='(foo bar)
|
||||||
|
@ -211,7 +213,8 @@ Emacs Lisp manual for more information and examples."
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defmacro pcase-exhaustive (exp &rest cases)
|
(defmacro pcase-exhaustive (exp &rest cases)
|
||||||
"The exhaustive version of `pcase' (which see)."
|
"The exhaustive version of `pcase' (which see).
|
||||||
|
If EXP fails to match any of the patterns in CASES, an error is signaled."
|
||||||
(declare (indent 1) (debug pcase))
|
(declare (indent 1) (debug pcase))
|
||||||
(let* ((x (gensym "x"))
|
(let* ((x (gensym "x"))
|
||||||
(pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
|
(pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
|
||||||
|
|
Loading…
Add table
Reference in a new issue