Subject: bug#14883: closed (Re: bug#14883: warning about unused returned value from some ert shoulds)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 05 Sep 2013 03:07:02 +0000

Your bug report

#14883: warning about unused returned value from some ert shoulds

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].

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

Subject: Re: bug#14883: warning about unused returned value from some ert shoulds
From: Stefan Monnier <[email-masked]>
To: Glenn Morris <[email-masked]>
Cc: [email-masked]
Date: Wed, 04 Sep 2013 23:06:38 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

> Compiling a file with contents:
>     ;; -*- lexical-binding: t; -*-
>     (require 'ert)
>     (require 'cl-lib)
>     (defvar foo-test 1)
>     (should foo-test)
>     (cl-assert foo-test)
> results in a warning (for some reason, only when lexical-binding is t):
>    foo.el:5:1:Warning: value returned from (car value-94600) is unused

This `car' came from the closure conversion.  I believe it is now fixed
in the trunk.  Thank you.

        Stefan

Subject: warning about unused returned value from some ert shoulds
From: Glenn Morris <[email-masked]>
To: [email-masked]
Date: Tue, 16 Jul 2013 16:17:05 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Package: emacs
Version: 24.3
Severity: minor

Compiling a file with contents:

    ;; -*- lexical-binding: t; -*-
    (require 'ert)
    (require 'cl-lib)
    (defvar foo-test 1)
    (should foo-test)
    (cl-assert foo-test)

results in a warning (for some reason, only when lexical-binding is t):

   foo.el:5:1:Warning: value returned from (car value-94600) is unused

The warning is from the `should'. Obviously it is a bogus warning
because the whole point of the should is to test the return value.
The similar cl-assert does not trigger a warning, because internally
cl-assert is written differently.

This is the same issue as http://debbugs.gnu.org/10969, for what is now
cl-pop.

byte-optimize-form-code-walker has special handling for the standard
`pop' macro so as not to warn about unused return values from (pop foo).
It would be nice if there was a general way to get the same result for
arbitrary macros (sort of the opposite of side-effect-free?), but I
don't see how.