Current File : //proc/thread-self/root/kunden/usr/share/emacs/27.2/lisp/emacs-lisp/pcase.elc |
;ELC
;;; Compiled
;;; in Emacs version 27.2
;;; with all optimizations.
;;; This file uses dynamic docstrings, first added in Emacs 19.29.
;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'macroexp)
(defconst pcase--memoize (make-hash-table :weakness 'key :test 'eq))
(defconst pcase--dontcare-upats '(t _ pcase--dontcare))
(defvar pcase--dontwarn-upats '(pcase--dontcare))
(byte-code "\300\301\302\303#\210\300\304\302\305#\210\300\306\302\307#\207" [put pcase-PAT edebug-form-spec (&or symbolp ("or" &rest pcase-PAT) ("and" &rest pcase-PAT) ("guard" form) ("let" pcase-PAT form) ("pred" pcase-FUN) ("app" pcase-FUN pcase-PAT) pcase-MACRO sexp) pcase-FUN (&or lambda-expr (functionp &rest form) sexp) pcase-MACRO pcase--edebug-match-macro] 4)
#@15
(fn CURSOR)
(defalias 'pcase--edebug-match-macro #[257 "\300C\301\302\303\304\305\306!\307\"\310\311%!\210\312\313\242B\"\207" [nil mapatoms make-byte-code 257 "\211\301N\211\205 \302!\205 \300\303!\302!B\300\242B\240\207" vconcat vector [pcase-macroexpander get-edebug-spec symbol-name] 6 "\n\n(fn S)" edebug-match &or] 9 (#$ . 973)])
#@1734 Evaluate EXP to get EXPVAL; try passing control to one of CASES.
CASES is a list of elements of the form (PATTERN CODE...).
For the first CASE whose PATTERN "matches" EXPVAL,
evaluate its CODE..., and return the value of the last form.
If no CASE has a PATTERN that matches, return nil.
Each PATTERN expands, in essence, to a predicate to call
on EXPVAL. When the return value of that call is non-nil,
PATTERN matches. PATTERN can take one of the forms:
_ matches anything.
\='VAL matches if EXPVAL is `equal' to VAL.
KEYWORD shorthand for \='KEYWORD
INTEGER shorthand for \='INTEGER
STRING shorthand for \='STRING
SYMBOL matches anything and binds it to SYMBOL.
If a SYMBOL is used twice in the same pattern
the second occurrence becomes an `eq'uality test.
(pred FUN) matches if FUN called on EXPVAL returns non-nil.
(app FUN PAT) matches if FUN called on EXPVAL matches PAT.
(guard BOOLEXP) matches if BOOLEXP evaluates to non-nil.
(let PAT EXPR) matches if EXPR matches PAT.
(and PAT...) matches if all the patterns match.
(or PAT...) matches if any of the patterns matches.
FUN in `pred' and `app' can take one of the forms:
SYMBOL or (lambda ARGS BODY)
call it with one argument
(F ARG1 .. ARGn)
call F with ARG1..ARGn and EXPVAL as n+1'th argument
FUN, BOOLEXP, EXPR, and subsequent PAT can refer to variables
bound earlier in the pattern by a SYMBOL pattern.
Additional patterns can be defined using `pcase-defmacro'.
See Info node `(elisp) Pattern-Matching Conditional' in the
Emacs Lisp manual for more information and examples.
(fn EXP &rest CASES)
(defalias 'pcase '(macro . #[385 "\301@\"@\232\203 A@\232\203 \211AA\202, \302\"\303@BB#\210\211\262\207" [pcase--memoize gethash pcase--expand puthash] 9 (#$ . 1328)]))
(byte-code "\300\301\302\303#\304\301\305\306#\210\304\301\307\310#\207" [function-put pcase lisp-indent-function 1 put edebug-form-spec (form &rest (pcase-PAT body)) function-documentation (pcase--make-docstring)] 5)
(defalias 'pcase--make-docstring #[0 "\300\301K\302\"\303\301\"\304\305!\210\306\307!r\211q\210\310\311\312\313\314!\315\"\316$\216A\206&