changeset 62319:150380a7c3d6

(byte-compile-nogroup-warn): New function. (byte-compile-form): Call byte-compile-nogroup-warn. (byte-compile-warning-types): Doc fix.
author Richard M. Stallman <rms@gnu.org>
date Sat, 14 May 2005 12:29:22 +0000
parents 2f50bbaca239
children 250393a33b15
files lisp/emacs-lisp/bytecomp.el
diffstat 1 files changed, 21 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/bytecomp.el	Sat May 14 11:30:27 2005 +0000
+++ b/lisp/emacs-lisp/bytecomp.el	Sat May 14 12:29:22 2005 +0000
@@ -338,8 +338,8 @@
 
   free-vars   references to variables not in the current lexical scope.
   unresolved  calls to unknown functions.
-  callargs    lambda calls with args that don't match the definition.
-  redefine    function cell redefined from a macro to a lambda or vice
+  callargs    function calls with args that don't match the definition.
+  redefine    function name redefined from a macro to ordinary function or vice
               versa, or redefined to take a different number of arguments.
   obsolete    obsolete variables and functions.
   noruntime   functions that may not be defined at runtime (typically
@@ -1244,6 +1244,20 @@
 (dolist (elt '(format message error))
   (put elt 'byte-compile-format-like t))
 
+;; Warn if a custom definition fails to specify :group.
+(defun byte-compile-nogroup-warn (form)
+  (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
+	(name (cadr form)))
+    (unless (plist-get keyword-args :group)
+      (byte-compile-warn
+       "%s for `%s' fails to specify containing group"
+       (cdr (assq (car form)
+		  '((custom-declare-group . defgroup)
+		    (custom-declare-face . defface)
+		    (custom-declare-variable . defcustom))))
+       (if (and (consp name) (eq (car name) 'quote))
+	   (cadr name) name)))))
+
 ;; Warn if the function or macro is being redefined with a different
 ;; number of arguments.
 (defun byte-compile-arglist-warn (form macrop)
@@ -2729,7 +2743,7 @@
 	   (when (byte-compile-const-symbol-p fn)
 	     (byte-compile-warn "`%s' called as a function" fn))
 	   (and (memq 'interactive-only byte-compile-warnings)
-		(memq (car form) byte-compile-interactive-only-functions)
+		(memq fn byte-compile-interactive-only-functions)
 		(byte-compile-warn "`%s' used from Lisp code\n\
 That command is designed for interactive use only" fn))
 	   (if (and handler
@@ -2739,8 +2753,10 @@
 	       (progn
 		 (byte-compile-set-symbol-position fn)
 		 (funcall handler form))
-	     (if (memq 'callargs byte-compile-warnings)
-		 (byte-compile-callargs-warn form))
+	     (when (memq 'callargs byte-compile-warnings)
+	       (if (memq fn '(custom-declare-group custom-declare-variable custom-declare-face))
+		   (byte-compile-nogroup-warn form))
+	       (byte-compile-callargs-warn form))
 	     (byte-compile-normal-call form))
 	   (if (memq 'cl-functions byte-compile-warnings)
 	       (byte-compile-cl-warn form))))