1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 14:30:50 -08:00

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.
This commit is contained in:
Mattias Engdegård 2023-09-19 15:18:11 +02:00
parent 321f2e1e4d
commit b03338c70d
2 changed files with 12 additions and 2 deletions

View file

@ -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)