;ELC   
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.



#@62 Name of buffer used to display any `check-declare' warnings.
(defconst check-declare-warning-buffer "*Check Declarations Warnings*" (#$ . 84))
#@340 Return the relative name of FILE.
Expands files with a ".c" or ".m" extension relative to the Emacs
"src/" directory.  Otherwise, `locate-library' searches for FILE.
If that fails, expands FILE relative to BASEFILE's directory part.
The returned file might not exist.  If FILE has an "ext:" prefix, so does
the result.

(fn FILE BASEFILE)
(defalias 'check-declare-locate #[514 "\301\302\"\303\203 \304\303O\262\305!\306\235\203! \307\307\310\"\"\202e \311!\211\262\203I \312\313\314#\262\315!\204E \315\316P!\203E \211\316P\202e \211\202e \307\317!\"\262\315!\204^ \301\320\"\203b \211\202e \211\314P\262\321!\262\203t \322P\207\207" [source-directory string-match "^ext:" nil 4 file-name-extension ("c" "m") expand-file-name "src" locate-library replace-regexp-in-string "\\.elc\\'" ".el" file-exists-p ".gz" file-name-directory "\\.el\\'" file-relative-name "ext:"] 9 (#$ . 234)])
#@393 Scan FILE for `declare-function' calls.
Return a list with elements of the form (FNFILE FN ARGLIST FILEONLY),
where only the first two elements need be present.  This claims that FNFILE
defines FN, with ARGLIST.  FILEONLY non-nil means only check that FNFILE
exists, not that it defines FN.  This is for function definitions that we
don't know how to recognize (e.g. some macros).

(fn FILE)
(defalias 'check-declare-scan #[257 "\300\301\302\303\"r\211q\210\304\305\"\216\306!\210\307\310\300\303#\203\332 \311\224\211b\210\3121* \313p!0\202, \210\300\300\211\211\211\211\211A<\204@ \300\211\262\203\264 G\211\262\314V\203\264 \315W\203\264 \3148\211\262\203\264 A@\211\2629\203\264 \316!\211\262\203\264 ;\203\264 \317\f\"\211\262\203\264 \320V\203\214 \3208\202\215 \303\211\262\303=\204\232 <\203\264 \3218\211\2629\203\264 F\nB\262\n\266\202 \203\325 \322\206\302 \323;\203\315 \202\316 \324\325\326!%\210\266\202 *\210\207" [nil generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] insert-file-contents re-search-forward "^[ 	]*\\((declare-function\\)[ 	\n]" 1 (error) read 2 6 symbol-name check-declare-locate 3 4 check-declare-warn "unknown function" "unknown file" "Malformed declaration" line-number-at-pos] 18 (#$ . 1149)])
(byte-code "\300\301\302\"\210\303\304\305\306\307\310%\210\311\312\313\314\315DD\316\317\320\321\322&\207" [autoload byte-compile-arglist-signature "bytecomp" custom-declare-group check-declare nil "Check `declare-function' statements." :group tools custom-declare-variable check-declare-ext-errors funcall function #[0 "\300\207" [nil] 1 ""] "When non-nil, warn about functions not found in :ext." :version "25.1" :type boolean] 8)
#@540 Check that FNFILE contains function definitions matching FNLIST.
Each element of FNLIST has the form (FILE FN ARGLIST FILEONLY), where
only the first two elements need be present.  This means FILE claimed FN
was defined in FNFILE with the specified ARGLIST.  FILEONLY non-nil means
to only check that FNFILE exists, not that it actually defines FN.

Returns nil if all claims are found to be true, otherwise a list
of errors with elements of the form (FILE FN TYPE), where TYPE
is a string giving details of the error.

(fn FNFILE FNLIST)
(defalias 'check-declare-verify #[514 "\301!\302\235\303\304\"\305\211\211\211\211\211\211\211\211	\203 \f\306\305O\262\307!\203\354 \310\311\312\"r\211q\210\313\314\"\216\315!\210\316\f\203A \317\202B \320\321\322\323\"\312\"\"\262\n\324\n\305\312#\203\352 \325\305w\210\326\327!\262	\326\330!\262\203\234 \331\332\305\312\333$\203\230 \325\305w\210\334\335!\203\230 \336\326\330!!\262\326\327!\262\303\337\"?\205\224 \336!B\206\333 \340\202\333 \303\341\"\203\250 \342\202\333 \303\343\"\203\264 \344\202\333 \303\345\"\203\300 \346\202\333 \303\347\"\203\314 \312\202\333 \334\350!\203\332 \351\352p!!\202\333 \340\262BB\262\202M *\210\211\203s\211@\3278\262\n\204\f\204?\205Z\353\202Z\354A@	\"\211\262\n\204$\3338?\205Z\355\202ZA\262	\346=\2034\356\202Z\312=\203?\305\202Z\357\267\202N\305\202Z\360\202Z\351!	\232?\205Z\361\262\203l\211@A@EB\262A\266\202\202\356 \210\207" [check-declare-ext-errors file-name-extension ("c" "m") string-match "^ext:" nil 4 file-regular-p generate-new-buffer " *temp*" t make-closure #[0 "\301\300!\205	 \302\300!\207" [V0 buffer-name kill-buffer] 2] insert-file-contents format "^[ 	]*\\(DEFUN\\)[ 	]*([ 	]*\"%s\"" "^[ 	]*(\\(fset[ 	]+'\\|cl-def\\(?:generic\\|method\\|un\\)\\|def\\(?:un\\|subst\\|foo\\|method\\|class\\|ine-\\(?:derived\\|generic\\|\\(?:global\\(?:ized\\)?-\\)?minor\\)-mode\\|\\(?:ine-obsolete-function-\\)?alias[ 	]+'\\|ine-overloadable-function\\)\\)[ 	]*%s\\([ 	;]+\\|$\\)" regexp-opt mapcar cadr re-search-forward " 	\n" match-string 2 1 search-forward "," 3 looking-at "\\([0-9]+\\)[ 	]*,[ 	]*\\([0-9]+\\|MANY\\|UNEVALLED\\)" string-to-number "[^0-9]" err "\\`define-\\(derived\\|generic\\)-mode\\'" (0 . 0) "\\`define\\(-global\\(ized\\)?\\)?-minor-mode\\'" (0 . 1) "\\`define-obsolete-function-alias\\>" obsolete "\\`\\(def\\(alias\\|class\\)\\|fset\\|\\(?:cl-\\)?defmethod\\)\\>" "\\((\\|nil\\)" byte-compile-arglist-signature read "file not found" assoc "function not found" "obsolete alias" #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (t 326 err 330)) "arglist not found" "arglist mismatch"] 20 (#$ . 2934)])
#@107 Sort list ALIST with elements FILE (FNFILE ...).
Return list with elements FNFILE (FILE ...).

(fn ALIST)
(defalias 'check-declare-sort #[257 "\300\211\211\211\211\211\203Y \211@\211@\262\211A\211\203Q \211@\211@\262\211A\262\301\"\211\262\203= \302A\nBC\"\241\210\202J 	BDB\262A\266\202\202 \210A\266\202\202 \210\207" [nil assoc append] 15 (#$ . 5684)])
#@271 Warn that FILE made a false claim about FN in FNFILE.
TYPE is a string giving the nature of the error.
Optional LINE is the claim's line number; otherwise, search for the claim.
Display warning in `check-declare-warning-buffer'.

(fn FILE FN FNFILE TYPE &optional LINE)
(defalias 'check-declare-warn #[1284 "\211C\303\304#\305\211\242\2045 r\306!q\210eb\210\211\242\2044 \307\310\311\"\312\313#\2034 \314\224b\210\211\315 \240\210)\316\317\320\321\322	!$\312\n$*\207" [warning-fill-prefix warning-prefix-function check-declare-warning-buffer make-closure #[514 "\302\303\304\300!\301\242\206 \305#c\210\207" [V0 V1 format "%s:%d:" file-relative-name 0] 6 "\n\n(fn LEVEL ENTRY)"] "    " find-file-noselect re-search-forward format "(declare-function[ 	\n]+%s" nil t 0 line-number-at-pos display-warning check-declare format-message "said `%s' was defined in %s: %s" file-relative-name] 13 (#$ . 6075)])
#@116 Check veracity of all `declare-function' statements in FILES.
Return a list of any errors found.

(fn &rest FILES)
(defalias 'check-declare-files #[128 "\303!\203\n \304!\210\305!\306\211\211rq\210\307\310!\204 \310 \210\311\312\313c\210)\314 \210)\211\203@ \211@\211\315!BB\262A\266\202\202* \210\316!\211\203e \211@\317@A\"\211\262\203^ \211@BB\262A\266\202\202D \210\211\237\262\316!\211\203\227 \211@\211A\211\203\217 \211@\320@A@@\3218$\210A\266\202\202u \210A\266\202\202m \210rq\210\322\323 \210)\207" [check-declare-warning-buffer mode-line-process inhibit-read-only get-buffer kill-buffer get-buffer-create nil derived-mode-p compilation-mode (:propertize ":run" face compilation-mode-line-run) t "\f\n" compilation-forget-errors check-declare-scan check-declare-sort check-declare-verify check-declare-warn 2 (:propertize ":exit" face compilation-mode-line-run) force-mode-line-update] 15 (#$ . 6999)])
#@125 Check veracity of all `declare-function' statements in FILE.
See `check-declare-directory' for more information.

(fn FILE)
(defalias 'check-declare-file #[257 "\300!\204 \301\302\"\210\303!\207" [file-exists-p error "File `%s' not found" check-declare-files] 4 (#$ . 7949) "fFile to check: "])
#@137 Check veracity of all `declare-function' statements under directory ROOT.
Returns non-nil if any false statements are found.

(fn ROOT)
(defalias 'check-declare-directory #[257 "\302\303!!\262\304!\204 \305\306\"\210\307\310\311\312	\313\314\315\316&\n\211\205' \317\320\"\207" [find-program grep-program directory-file-name file-relative-name file-directory-p error "Directory `%s' not found" process-lines "-name" "*.el" "-exec" "-l" "^[ 	]*(declare-function" "{}" "+" apply check-declare-files] 12 (#$ . 8255) "DDirectory to check: "])
(provide 'check-declare)
