[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26486: 25.1.91; unused var warning from cconv.el can't be suppressed
From: |
Lars Ingebrigtsen |
Subject: |
bug#26486: 25.1.91; unused var warning from cconv.el can't be suppressed |
Date: |
Mon, 05 Jul 2021 17:17:06 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) |
Noam Postavsky <npostavs@users.sourceforge.net> writes:
> This happens also without a macro.
>
> ;; -*- lexical-binding: t; byte-compile-warnings: nil -*-
> (with-no-warnings (let (unused)))
This currently gives a warning about both an unused variable and an
empty let body.
The following seemingly straightforward patch fixes both these things,
I'd appreciate it if somebody had a look over it first, though. :-)
(So Stefan M added to the CCs.)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 70999648d4..d97bc1073b 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -325,6 +325,7 @@ byte-compile-warnings
docstrings docstrings that are too wide (longer than 80 characters,
or `fill-column', whichever is bigger)
suspicious constructs that usually don't do what the coder wanted.
+ empty-body the body of a binding form is empty.
If the list begins with `not', then the remaining elements specify warnings to
suppress. For example, (not mapcar) will suppress warnings about mapcar."
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index f663710902..f1579cda8b 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -259,7 +259,8 @@ cconv--warn-unused-msg
(not (intern-soft var))
(eq ?_ (aref (symbol-name var) 0))
;; As a special exception, ignore "ignore".
- (eq var 'ignored))
+ (eq var 'ignored)
+ (not (byte-compile-warning-enabled-p 'unbound var)))
(let ((suggestions (help-uni-confusable-suggestions (symbol-name var))))
(format "Unused lexical %s `%S'%s"
varkind var
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index df864464b7..e9c2eb3fee 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -319,14 +319,16 @@ macroexp--expand-all
(`(,(and fun (or 'let 'let*)) . ,(or `(,bindings . ,body)
pcase--dontcare))
(macroexp--cons fun
- (macroexp--cons (macroexp--all-clauses bindings 1)
- (if (null body)
- (macroexp-unprogn
- (macroexp-warn-and-return
- (format "Empty %s body" fun)
- nil t))
- (macroexp--all-forms body))
- (cdr form))
+ (macroexp--cons
+ (macroexp--all-clauses bindings 1)
+ (if (null body)
+ (macroexp-unprogn
+ (macroexp-warn-and-return
+ (and (byte-compile-warning-enabled-p 'empty-body)
+ (format "Empty %s body" fun))
+ nil t))
+ (macroexp--all-forms body))
+ (cdr form))
form))
(`(,(and fun `(lambda . ,_)) . ,args)
;; Embedded lambda in function position.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
- bug#26486: 25.1.91; unused var warning from cconv.el can't be suppressed,
Lars Ingebrigtsen <=