1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-25 07:28:20 +00:00

Warn about bad defcustom :local keyword at compile time

* lisp/emacs-lisp/bytecomp.el (bytecomp--custom-declare): Warn about
invalid values for the defcustom :local keyword.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-test-defcustom-local): New test.
This commit is contained in:
Stefan Kangas 2024-10-02 02:28:52 +02:00
parent 9ad73f9261
commit fb42a253bd
2 changed files with 15 additions and 1 deletions

View File

@ -5467,7 +5467,13 @@ FORM is used to provide location, `bytecomp--cus-function' and
(when (and name
byte-compile-current-file ; only when compiling a whole file
(eq fun 'custom-declare-group))
(setq byte-compile-current-group name))))
(setq byte-compile-current-group name))
;; Check :local
(when-let ((val (and (eq fun 'custom-declare-variable)
(plist-get keyword-args :local)))
(_ (not (memq val '(t permanent permanent-only)))))
(bytecomp--cus-warn form ":local keyword does not accept %S" val))))
(byte-compile-normal-call form))

View File

@ -1985,6 +1985,14 @@ EXPECTED-POINT BINDINGS (MODES \\='\\='(ruby-mode js-mode python-mode)) \
(dc 'integerp))
))
(ert-deftest bytecomp-test-defcustom-local ()
(cl-flet ((dc (local) `(defcustom mytest nil "doc" :type 'sexp :local ',local :group 'test)))
(bytecomp--with-warning-test
(rx ":local keyword does not accept 'symbol") (dc 'symbol))
(bytecomp--with-warning-test
(rx ":local keyword does not accept \"string\"") (dc "string"))
))
(ert-deftest bytecomp-test-defface-spec ()
(cl-flet ((df (spec) `(defface mytest ',spec "doc" :group 'test)))
(bytecomp--with-warning-test