[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 2de25accaf 4/4: Warn about `condition-case' with quoted condition
From: |
Mattias Engdegård |
Subject: |
master 2de25accaf 4/4: Warn about `condition-case' with quoted condition names |
Date: |
Thu, 29 Dec 2022 06:44:03 -0500 (EST) |
branch: master
commit 2de25accaf31aef643557ec476041c770fc7ac15
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>
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.
---
lisp/emacs-lisp/bytecomp.el | 5 +++++
test/lisp/emacs-lisp/bytecomp-tests.el | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 7571b4d409..1a48897739 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 0d62283c04..61f4998f6b 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))))