On Tue, 25 Feb 2014 05:28:42 -0500, Daniel Murphy
<[email protected]> wrote:
"Steven Schveighoffer" wrote in message
news:[email protected]...
A wild wild guess is that there was code in the compiler that used to
require it (after all, it was required a long time ago), and somehow it
got reactivated by accident.
But wild guesses don't help fix bugs :)
Walter + Andrei did it, and it was completely intentional, and it was
known that it would break code.
This was the wrong fix. Druntime should be modified to use TypeInfo.equals
instead of TypeInfo.compare. Compare is no longer needed, since it's only
used to check for equality.
Note that the docs say BOTH opEquals and opCmp should be specified,
because either can be used.
I would suggest a proper interim fix is to only reject key types that
define opEquals, but not opCmp. Then switch to using equals in druntime.
Finally, get rid of AA's as a specialized type, map them cleanly to a
template.
-Steve