emacs-diffs
[Top][All Lists]
Advanced

[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))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]