Commit e50196e8 authored by Noam Postavsky's avatar Noam Postavsky

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
parent 8a2466ff
......@@ -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,
the clause succeeds; @code{pcase} then evaluates its @var{body-forms},
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:
@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 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,
meaning they must match exactly: The pattern \\='(foo bar)
......@@ -211,7 +213,8 @@ Emacs Lisp manual for more information and examples."
(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))
(let* ((x (gensym "x"))
(pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
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