diff options
author | Stefan Kangas <stefan@marxist.se> | 2020-11-30 22:42:08 +0100 |
---|---|---|
committer | Stefan Kangas <stefan@marxist.se> | 2020-11-30 22:43:37 +0100 |
commit | a126c3684f8854f8c0d7ab5dcf55f31bac77dcf9 (patch) | |
tree | 15744360c41d7c6e711739857c3ce0abd06e1a4c /test/lisp/emacs-lisp | |
parent | 713bac483b4b3b7c0116ba8cd832eb9a9ecbd536 (diff) | |
download | emacs-a126c3684f8854f8c0d7ab5dcf55f31bac77dcf9.tar.gz emacs-a126c3684f8854f8c0d7ab5dcf55f31bac77dcf9.tar.bz2 emacs-a126c3684f8854f8c0d7ab5dcf55f31bac77dcf9.zip |
Test byte-compiler free variable warning
* test/lisp/emacs-lisp/bytecomp-tests.el (ert-x): Require.
(bytecomp--define-warning-file-test): New macro.
(bytecomp-warn/warn-free-setq\.el)
(bytecomp-warn/warn-free-variable-reference\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el:
New files.
Diffstat (limited to 'test/lisp/emacs-lisp')
3 files changed, 20 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el new file mode 100644 index 00000000000..6e187129c9b --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el @@ -0,0 +1,2 @@ +;;; -*- lexical-binding: t -*- +(setq foo 'bar) diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el new file mode 100644 index 00000000000..50a95272874 --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el @@ -0,0 +1,4 @@ +;;; -*- lexical-binding: t -*- +(defvar xxx-test) +(defun foo () + (setq xxx-test bar)) diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index 680aa514a27..c9070c03b3f 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -26,6 +26,7 @@ ;;; Commentary: (require 'ert) +(require 'ert-x) (require 'cl-lib) (require 'subr-x) (require 'bytecomp) @@ -546,6 +547,19 @@ Subtests signal errors if something goes wrong." '(eval-and-compile (defmacro abc (arg) -1) (defun def () (abc 2)))) (should (equal (funcall 'def) -1))) +(defmacro bytecomp--define-warning-file-test (file re-warning &optional reverse) + `(ert-deftest ,(intern (format "bytecomp-warn/%s" file)) () + :expected-result ,(if reverse :failed :passed) + (with-current-buffer (get-buffer-create "*Compile-Log*") + (let ((inhibit-read-only t)) (erase-buffer)) + (byte-compile-file ,(ert-resource-file file)) + (ert-info ((buffer-string) :prefix "buffer: ") + (should (re-search-forward ,re-warning)))))) + +(bytecomp--define-warning-file-test "warn-free-setq.el" "free.*foo") + +(bytecomp--define-warning-file-test "warn-free-variable-reference.el" "free.*bar") + (ert-deftest test-eager-load-macro-expansion-eval-when-compile () ;; Make sure we interpret eval-when-compile forms properly. CLISP ;; and SBCL interpreter eval-when-compile (well, the CL equivalent) |