aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMattias EngdegÄrd2024-09-27 11:48:14 +0200
committerMattias EngdegÄrd2024-09-27 19:26:52 +0200
commitbba14a27678317eee68e87a343e7314b3949f6c7 (patch)
treee0f36001605ef720aa9b94d7dd38bd81d5880e09 /test
parent09d63ba32bbd0ddbd8c9deb4fcfe8e4356ea0e8d (diff)
downloademacs-bba14a27678317eee68e87a343e7314b3949f6c7.tar.gz
emacs-bba14a27678317eee68e87a343e7314b3949f6c7.zip
Warn about bad face specs in `defface` at compile time
* lisp/emacs-lisp/bytecomp.el (byte-compile--custom-declare-face): Byte-compile `defface` forms, or the byte-compile handler won't be called. (bytecomp--check-cus-face-spec): New. (bytecomp--custom-declare): Call it. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-test-defface-spec): New tests.
Diffstat (limited to 'test')
-rw-r--r--test/lisp/emacs-lisp/bytecomp-tests.el26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el
index e3ce87cc9af..cce6b1221fc 100644
--- a/test/lisp/emacs-lisp/bytecomp-tests.el
+++ b/test/lisp/emacs-lisp/bytecomp-tests.el
@@ -1985,6 +1985,32 @@ EXPECTED-POINT BINDINGS (MODES \\='\\='(ruby-mode js-mode python-mode)) \
1985 (dc 'integerp)) 1985 (dc 'integerp))
1986 )) 1986 ))
1987 1987
1988(ert-deftest bytecomp-test-defface-spec ()
1989 (cl-flet ((df (spec) `(defface mytest ',spec "doc" :group 'test)))
1990 (bytecomp--with-warning-test
1991 (rx "Bad face display condition `max-colors'")
1992 (df '((((class color grayscale) (max-colors 75) (background light))
1993 :foreground "cyan"))))
1994 (bytecomp--with-warning-test
1995 (rx "Bad face display `defualt'")
1996 (df '((defualt :foreground "cyan"))))
1997 (bytecomp--with-warning-test
1998 (rx "`:inverse' is not a valid face attribute keyword")
1999 (df '((t :background "blue" :inverse t))))
2000 (bytecomp--with-warning-test
2001 (rx "`:inverse' is not a valid face attribute keyword")
2002 (df '((t (:background "blue" :inverse t))))) ; old attr list syntax
2003 (bytecomp--with-warning-test
2004 (rx "Value for face attribute `:inherit' should not be quoted")
2005 (df '((t :inherit 'other))))
2006 (bytecomp--with-warning-test
2007 (rx "Missing face attribute `:extend' value")
2008 (df '((t :foundry "abc" :extend))))
2009 (bytecomp--with-warning-test
2010 (rx "Non-keyword in face attribute list: `\"green\"'")
2011 (df '((t :foreground "white" "green"))))
2012 ))
2013
1988(ert-deftest bytecomp-function-attributes () 2014(ert-deftest bytecomp-function-attributes ()
1989 ;; Check that `byte-compile' keeps the declarations, interactive spec and 2015 ;; Check that `byte-compile' keeps the declarations, interactive spec and
1990 ;; doc string of the function (bug#55830). 2016 ;; doc string of the function (bug#55830).