changeset 86220:1244ab609a99

(check-declare-verify): If fnfile does not exist, try adding `.el' extension. Also search for defsubsts.
author Glenn Morris <rgm@gnu.org>
date Mon, 19 Nov 2007 00:09:20 +0000
parents 16c8cf994132
children d6b46513e321
files lisp/emacs-lisp/check-declare.el
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/check-declare.el	Mon Nov 19 00:08:23 2007 +0000
+++ b/lisp/emacs-lisp/check-declare.el	Mon Nov 19 00:09:20 2007 +0000
@@ -30,6 +30,10 @@
 ;; checks that all such statements in a file or directory are accurate.
 ;; The entry points are `check-declare-file' and `check-declare-directory'.
 
+;;; TODO:
+
+;; 1. Handle defstructs (eg uniquify-item-base in desktop.el).
+
 ;;; Code:
 
 (defconst check-declare-warning-buffer "*Check Declarations Warnings*"
@@ -76,14 +80,17 @@
   (let ((m (format "Checking %s..." fnfile))
         re fn sig siglist arglist type errlist)
     (message "%s" m)
+    (or (file-exists-p fnfile)
+        (setq fnfile (concat fnfile ".el")))
     (if (file-exists-p fnfile)
         (with-temp-buffer
           (insert-file-contents fnfile)
-          (setq re (format "^[ \t]*(defun[ \t]+%s\\>"
+          ;; defsubst's don't _have_ to be known at compile time.
+          (setq re (format "^[ \t]*(def\\(un\\|subst\\)[ \t]+%s\\>"
                            (regexp-opt (mapcar 'cadr fnlist) t)))
           (while (re-search-forward re nil t)
             (skip-chars-forward " \t\n")
-            (setq fn (match-string 1)
+            (setq fn (match-string 2)
                   sig (if (looking-at "\\((\\|nil\\)")
                           (byte-compile-arglist-signature
                            (read (current-buffer))))