For code migration from 2.065 to 2.066, following code should report diagnostic error.
struct S
{
int x;
int y;
int opCmp(ref const S other) const
{
return x < other.x ? -1 : x > other.x ? 1 : 0;
}
hash_t toHash() const
{
return x;
}
}
void main()
{
S s1 = S(1, 1);
S s2 = S(1, 2);
S s3 = S(2, 1);
S s4 = S(2, 2);
bool[S] arr; // line 22
arr[s1] = true;
arr[s2] = true;
arr[s3] = true;
arr[s4] = true;
import std.stdio;
writeln(arr);
}
For example:
test.d(22): Error: AA key type S is now required equality rather than comparison
test.d(22): Please define opEquals, or remove it to rely on default memberwise equality
Note that, the error should be removed in the future. Because opCmp should have no effect when the struct is used for AA keys.