[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v |
Date: |
Thu, 22 Nov 2007 04:18:54 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Glenn Morris <gm> 07/11/22 04:18:54
Index: check-declare.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/emacs-lisp/check-declare.el,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- check-declare.el 21 Nov 2007 09:03:05 -0000 1.4
+++ check-declare.el 22 Nov 2007 04:18:54 -0000 1.5
@@ -34,7 +34,7 @@
;; 1. Handle defstructs (eg uniquify-item-base in desktop.el).
-;; 2. Check C files (look in src/)?
+;; 2. Argument checking for functions defined in C.
;;; Code:
@@ -56,7 +56,15 @@
(setq fn (match-string 1)
fnfile (match-string 2))
(or (file-name-absolute-p fnfile)
- (setq fnfile (expand-file-name fnfile (file-name-directory file))))
+ (setq fnfile
+ (expand-file-name fnfile
+ ;; .c files are assumed to be
+ ;; relative to the Emacs src/ directory.
+ (if (string-equal
+ "c" (file-name-extension fnfile))
+ (expand-file-name "src"
+ source-directory)
+ (file-name-directory file)))))
(setq alist (cons
(list fnfile fn
(progn
@@ -80,25 +88,28 @@
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."
(let ((m (format "Checking %s..." fnfile))
+ (cflag (string-equal "c" (file-name-extension fnfile)))
re fn sig siglist arglist type errlist)
(message "%s" m)
- (if (string-equal (file-name-extension fnfile) "c")
- (progn
- (message "%sskipping C file" m)
- nil)
- (or (file-exists-p fnfile)
+ (or cflag
+ (file-exists-p fnfile)
(setq fnfile (concat fnfile ".el")))
(if (file-exists-p fnfile)
(with-temp-buffer
(insert-file-contents fnfile)
;; defsubst's don't _have_ to be known at compile time.
- (setq re (format "^[ \t]*(\\(def\\(?:un\\|subst\\|\
+ (setq re (format (if cflag
+ "^[ \t]*\\(DEFUN\\)[ \t]*([ \t]*\"%s\""
+ "^[ \t]*(\\(def\\(?:un\\|subst\\|\
ine-derived-mode\\|ine-minor-mode\\|alias[ \t]+'\\)\\)\
-\[ \t]*%s\\([ \t;]+\\|$\\)"
+\[ \t]*%s\\([ \t;]+\\|$\\)")
(regexp-opt (mapcar 'cadr fnlist) t)))
(while (re-search-forward re nil t)
(skip-chars-forward " \t\n")
(setq fn (match-string 2)
+ ;; (min . max) for a fixed number of arguments, or
+ ;; arglists with optional elements.
+ ;; (min) for arglists with &rest.
sig (cond ((string-equal (match-string 1)
"define-derived-mode")
'(0 . 0))
@@ -122,7 +133,9 @@
(if (setq sig (assoc (cadr e) siglist))
;; Recall we use t to mean no arglist specified,
;; to distinguish from an empty arglist.
- (unless (or (eq arglist t)
+ ;; FIXME c arg checking not yet implemented.
+ (unless (or cflag
+ (eq arglist t)
(eq sig t))
(unless (equal (byte-compile-arglist-signature arglist)
(cdr sig))
@@ -132,7 +145,7 @@
(when type
(setq errlist (cons (list (car e) (cadr e) type) errlist))))
(message "%s%s" m (if errlist "problems found" "OK"))
- errlist)))
+ errlist))
(defun check-declare-sort (alist)
"Sort a list with elements FILE (FNFILE ...).
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/18
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/19
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/21
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v,
Glenn Morris <=
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/22
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/22
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/22
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/23
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/26
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/27
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/28
- [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/check-declare.el,v, Glenn Morris, 2007/11/30