emacs-diffs
[Top][All Lists]
Advanced

[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 06:20:54 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Glenn Morris <gm>       07/11/22 06:20:54

Index: check-declare.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/emacs-lisp/check-declare.el,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- check-declare.el    22 Nov 2007 04:18:54 -0000      1.5
+++ check-declare.el    22 Nov 2007 06:20:53 -0000      1.6
@@ -34,8 +34,6 @@
 
 ;; 1. Handle defstructs (eg uniquify-item-base in desktop.el).
 
-;; 2. Argument checking for functions defined in C.
-
 ;;; Code:
 
 (defconst check-declare-warning-buffer "*Check Declarations Warnings*"
@@ -89,7 +87,7 @@
 \(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)
+        re fn sig siglist arglist type errlist minargs maxargs)
     (message "%s" m)
     (or cflag
         (file-exists-p fnfile)
@@ -110,7 +108,18 @@
                   ;; (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)
+                  sig (cond (cflag
+                             (re-search-forward "," nil t 3)
+                             (skip-chars-forward " \t\n")
+                             ;; Assuming minargs and maxargs on same line.
+                             (when (looking-at "\\([0-9]+\\)[ \t]*,[ \t]*\
+\\([0-9]+\\|MANY\\|UNEVALLED\\)")
+                               (setq minargs (string-to-number (match-string 
1))
+                                     maxargs (match-string 2))
+                               (cons minargs (unless (string-match "[^0-9]"
+                                                                   maxargs)
+                                               (string-to-number maxargs)))))
+                            ((string-equal (match-string 1)
                                            "define-derived-mode")
                              '(0 . 0))
                             ((string-equal (match-string 1)
@@ -133,9 +142,7 @@
                 (if (setq sig (assoc (cadr e) siglist))
                     ;; Recall we use t to mean no arglist specified,
                     ;; to distinguish from an empty arglist.
-                    ;; FIXME c arg checking not yet implemented.
-                    (unless (or cflag
-                                (eq arglist t)
+                    (unless (or (eq arglist t)
                                 (eq sig t))
                       (unless (equal (byte-compile-arglist-signature arglist)
                                      (cdr sig))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]