Summary

Potentially bogus scrutinizer warning "expected in `let' binding of `x' a single result, but were given 3 results"

Metadata

Description

If you try to bind values to a single identifier you will get the above warning:

 (let ((x (values 1 2 4))) #f)

That alone isn't surprising as it may be a programmer error but if you use that inside a macro expansion like

 (receive (in out pid) (process cmd)
       (display str out)
       (flush-output out)
       (close-output-port out)
       (let ((res
              (base64-encode-string
               (read-string #f in))))
         (process-wait pid)
         res))

As found in hato's code the message is at least puzzling as the programmer doesn't care about the values at all, but the macro gets expanded to a ##core#let which in turn gets under scrutiny.

I am not sure what the correct behaviour should be.

Changes and comments

[2014-07-30 09:03:06 UTC] sjamaan changed milestone from someday to 4.10.0

[2014-07-30 09:03:06 UTC] sjamaan wrote:

We should give this some thought before releasign 4.10.0

[2015-08-27 08:45:47 UTC] sjamaan changed milestone from 4.10.0 to 4.11.0

[2015-08-27 08:45:47 UTC] sjamaan wrote:

Unsure this is a bug, moving it to 4.11 anyway

[2015-11-20 14:46:11 UTC] sjamaan changed status from new to closed

[2015-11-20 14:46:11 UTC] sjamaan set resolution to wontfix

[2015-11-20 14:46:11 UTC] sjamaan wrote:

Without a clear way to improve the situation, there's not much that we can do with this ticket. Closing it for now, until someone comes up with a proper solution.

[2015-11-20 14:50:21 UTC] ckeen wrote:

Yes, let's do that. Thanks!