emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master c3a2ede: * lisp/emacs-lisp/bytecomp.el (byte-compil


From: Glenn Morris
Subject: [Emacs-diffs] master c3a2ede: * lisp/emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
Date: Thu, 28 Jan 2016 22:16:56 +0000

branch: master
commit c3a2eded19fff4733a7ae15823808e80f9f188fb
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>

    * lisp/emacs-lisp/bytecomp.el (byte-compile-nogroup-warn):
    Warn if defcustom has no type.  (Bug#16276)
---
 lisp/emacs-lisp/bytecomp.el |   50 ++++++++++++++++++++++--------------------
 1 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 4ee8b37..9fe6e03 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -1360,31 +1360,33 @@ extra args."
 (dolist (elt '(format message error))
   (put elt 'byte-compile-format-like t))
 
-;; Warn if a custom definition fails to specify :group.
+;; Warn if a custom definition fails to specify :group, or :type.
 (defun byte-compile-nogroup-warn (form)
-  (if (and (memq (car form) '(custom-declare-face custom-declare-variable))
-           byte-compile-current-group)
-      ;; The group will be provided implicitly.
-      nil
-    (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
-          (name (cadr form)))
-      (or (not (eq (car-safe name) 'quote))
-          (and (eq (car form) 'custom-declare-group)
-               (equal name ''emacs))
-          (plist-get keyword-args :group)
-          (not (and (consp name) (eq (car name) 'quote)))
-          (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))))
-           (cadr name)))
-      ;; Update the current group, if needed.
-      (if (and byte-compile-current-file ;Only when compiling a whole file.
-               (eq (car form) 'custom-declare-group)
-               (eq (car-safe name) 'quote))
-          (setq byte-compile-current-group (cadr name))))))
+  (let ((keyword-args (cdr (cdr (cdr (cdr form)))))
+       (name (cadr form)))
+    (when (eq (car-safe name) 'quote)
+      (or (not (eq (car form) 'custom-declare-variable))
+         (plist-get keyword-args :type)
+         (byte-compile-warn
+          "defcustom for `%s' fails to specify type" (cadr name)))
+      (if (and (memq (car form) '(custom-declare-face custom-declare-variable))
+              byte-compile-current-group)
+         ;; The group will be provided implicitly.
+         nil
+       (or (and (eq (car form) 'custom-declare-group)
+                (equal name ''emacs))
+           (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))))
+            (cadr name)))
+       ;; Update the current group, if needed.
+       (if (and byte-compile-current-file ;Only when compiling a whole file.
+                (eq (car form) 'custom-declare-group))
+           (setq byte-compile-current-group (cadr name)))))))
 
 ;; Warn if the function or macro is being redefined with a different
 ;; number of arguments.



reply via email to

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