Subject: bug#31232: closed (Re: bug#16206: 24.3; Incorrect unused variable byte-compiler warning in dotimes)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 28 Apr 2018 20:22:02 +0000

Your bug report

#16206: 27.0.50; Obsolete argument RESULT in the macro `dotimes'

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
16206: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16206
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#16206: 24.3; Incorrect unused variable byte-compiler warning in dotimes
From: Juri Linkov <[email-masked]>
To: Stefan Monnier <[email-masked]>
Cc: Christopher Wellons <[email-masked]>, [email-masked]
Date: Sat, 28 Apr 2018 23:21:05 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Version: 27.0.50

>> But without that addition the sentence makes no sense when
>> the documentation describes the RESULT argument and then
>> at the end says that "RESULT should not be used".
>
> "Its use is deprecated".

Done in f4eeb0f.

Subject: 27.0.50; Obsolete argument RESULT in the macro `dotimes'
From: Juri Linkov <[email-masked]>
To: [email-masked]
Date: Sat, 21 Apr 2018 23:53:44 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

If the arg RESULT of dotimes is not yet deprecated,
then to legitimize its usage it needs to be fixed.
At least, this patch tries to do this (maybe not in the best way):

diff --git a/lisp/subr.el b/lisp/subr.el
index 9cf7d59..aa2dc49 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -246,8 +246,8 @@ dotimes
                  ,@body)
                (setq ,counter (1+ ,counter)))
              ,@(if (cddr spec)
-                   ;; FIXME: This let often leads to "unused var" warnings.
-                   `((let ((,(car spec) ,counter)) ,@(cddr spec))))))
+                   ;; No-op ,(car spec) is added to avoid "unused var" warnings.
+                   `((let ((,(car spec) ,counter)) ,(car spec) ,@(cddr spec))))))
       `(let ((,temp ,end)
              (,(car spec) ,start))
          (while (< ,(car spec) ,temp)