From: Mattias EngdegÄrd Date: Thu, 29 Dec 2022 11:00:50 +0000 (+0100) Subject: Warn about `condition-case' with quoted condition names X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2de25accaf31aef643557ec476041c770fc7ac15;p=emacs.git Warn about `condition-case' with quoted condition names * lisp/emacs-lisp/bytecomp.el (byte-compile-condition-case): Add warning. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-quoted-condition): Add test case. --- diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 7571b4d409a..1a488977390 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -4835,6 +4835,11 @@ binding slots have been popped." (dolist (clause (reverse clauses)) (let ((condition (nth 1 clause))) + (when (and (eq (car-safe condition) 'quote) + (cdr condition) (null (cddr condition))) + (byte-compile-warn-x + condition "`condition-case' condition should not be quoted: %S" + condition)) (unless (consp condition) (setq condition (list condition))) (dolist (c condition) (unless (and c (symbolp c)) diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index 0d62283c04a..61f4998f6ba 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -923,6 +923,11 @@ byte-compiled. Run with dynamic binding." `(defvar foo t ,bytecomp-tests--docstring))) (ert-deftest bytecomp-warn-quoted-condition () + (bytecomp--with-warning-test + "Warning: `condition-case' condition should not be quoted: 'arith-error" + '(condition-case nil + (abc) + ('arith-error "ugh"))) (bytecomp--with-warning-test "Warning: `ignore-error' condition argument should not be quoted: 'error" '(ignore-error 'error (abc))))