[Issue 16338] New: sort variantArray bug
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Sat Jul 30 01:38:43 PDT 2016
https://issues.dlang.org/show_bug.cgi?id=16338
Issue ID: 16338
Summary: sort variantArray bug
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: kapblc at mail.ru
import std.stdio;
import std.variant;
import std.algorithm;
void main(){
struct Trava {
long a, b, c;
}
Trava n1, n2, n3, n4, n5, n6;
n1.a = 1;
n2.a = 2;
n3.a = 3;
n4.a = -1;
n5.a = 5;
n6.a = 6;
auto M = [n1, n2, n3, n4, n5, n6];
writeln("input:", M);
M.sort!((a, b) => a.a < b.a);
writeln("output:", M); // [n4, n1, n2, n3, n5, n6] ok
auto m = variantArray(n1, n2, n3, n4, n5, n6);
writeln("input:", m);
m.sort!((a, b){
auto A = a.peek!Trava;
auto B = b.peek!Trava;
return A.a < B.a;
});
writeln("output:", m); // [n4, n4, n4, n4, n5, n6] bug
struct Trava2 {
long a, b;
}
Trava2 v1, v2, v3, v4, v5, v6;
v1.a = 1;
v2.a = 2;
v3.a = 3;
v4.a = -1;
v5.a = 5;
v6.a = 6;
auto w = variantArray(v1, v2, v3, v4, v5, v6);
writeln("input:", w);
w.sort!((a, b){
auto A = a.peek!Trava2;
auto B = b.peek!Trava2;
return A.a < B.a;
});
writeln("output:", w); // [v4, v1, v2, v3, v5, v6] ok
}
--
More information about the Digitalmars-d-bugs
mailing list