Function: pcase--let*
pcase--let* is a byte-compiled function defined in pcase.el.gz.
Signature
(pcase--let* BINDINGS BODY &optional STRICT)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/pcase.el.gz
(defun pcase--let* (bindings body &optional strict)
(cond
((null bindings) (macroexp-progn body))
((pcase--trivial-upat-p (caar bindings))
(macroexp-let* `(,(car bindings)) (pcase--let* (cdr bindings) body)))
(t
(let* ((binding (pop bindings))
(x (gensym "x"))
(pcase--dontwarn-upats (cons x pcase--dontwarn-upats)))
(pcase--expand
(cadr binding)
`((,(car binding) ,(pcase--let* bindings body strict))
,(if strict
`(,x (error "`pcase' pattern does not match value: %S %S"
(quote ,(car binding))
,x))
;; We can either signal an error here, or just use `pcase--dontcare'
;; which generates more efficient code. In practice, if we use
;; `pcase--dontcare' we will still often get an error and the few
;; cases where we don't do not matter that much, so
;; it's a better choice.
'(pcase--dontcare nil))))))))