diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2023-09-19 15:18:11 +0200 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2023-09-19 15:21:03 +0200 |
commit | b03338c70d81f2cba9c8a0b4fefbf83ef7a346e0 (patch) | |
tree | 28ebf04f4dbfbf5b021d018216df6fe85b8110f5 /lisp/emacs-lisp/bytecomp.el | |
parent | 321f2e1e4d4b2f209b072dc891cc89cbab19f032 (diff) | |
download | emacs-b03338c70d81f2cba9c8a0b4fefbf83ef7a346e0.tar.gz emacs-b03338c70d81f2cba9c8a0b4fefbf83ef7a346e0.tar.bz2 emacs-b03338c70d81f2cba9c8a0b4fefbf83ef7a346e0.zip |
Warn about duplicated :tag strings in defcustom choices
It is bad user experience when two menu items have identical labels.
* lisp/emacs-lisp/bytecomp.el (bytecomp--check-cus-type): Add check.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-test-defcustom-type): Add test case.
Diffstat (limited to 'lisp/emacs-lisp/bytecomp.el')
-rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 1474acc1638..387d7ef4de1 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -5272,7 +5272,8 @@ FORM is used to provide location, `bytecomp--cus-function' and (unless tail (bytecomp--cus-warn type "`%s' without any types inside" head)) (let ((clauses tail) - (constants nil)) + (constants nil) + (tags nil)) (while clauses (let* ((ty (car clauses)) (ty-head (car-safe ty))) @@ -5291,6 +5292,12 @@ FORM is used to provide location, `bytecomp--cus-function' and (bytecomp--cus-warn ty "duplicated value in `%s': `%S'" head val)) (push val constants))) + (let ((tag (and (consp ty) (plist-get (cdr ty) :tag)))) + (when (stringp tag) + (when (member tag tags) + (bytecomp--cus-warn + ty "duplicated :tag string in `%s': %S" head tag)) + (push tag tags))) (bytecomp--check-cus-type ty)) (setq clauses (cdr clauses))))) ((eq head 'cons) |