Bug 5506 – StoppingPolicy.longest doesn't work well
Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2011-01-30T04:59:00Z
Last change time
2011-01-30T21:40:53Z
Keywords
wrong-code
Assigned to
andrei
Creator
bearophile_hugs
Comments
Comment #0 by bearophile_hugs — 2011-01-30T04:59:21Z
The purpose of std.range.StoppingPolicy.longest is to change the behaviour of zip to "Stop when the longest range is exhausted". But this code with DMD 2.051 shows it doesn't stop looping (problem found by tsukikage):
import std.c.stdio:printf;
import std.range: zip, StoppingPolicy;
void main() {
int[] array = [1, 2];
auto count = 0;
foreach (p; zip(StoppingPolicy.longest, array))
if (count++ < 30)
printf("%d\n", p[0]);
else
break;
}
Output:
1
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
------------------------------
Additionally a small enhancement request. Instead of writing:
zip(StoppingPolicy.longest, array)
I think this is enough, and shorter, but a bit less clear, so I am not sure if this OK:
zip(Zip.longest, array)
(In reply to comment #1)
> Oh, sorry, I didn't notice that you already assigned it to yourself, Andrei – I
> just submitted a patch via a GitHub pull request:
>
> https://github.com/D-Programming-Language/phobos/pull/1
The pull request is a great way. I just followed it. Thanks very much!