https://issues.dlang.org/show_bug.cgi?id=13179

Steven Schveighoffer <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #31 from Steven Schveighoffer <[email protected]> ---
You realize this now SILENTLY breaks such code? Anyone who defined opCmp and
toHash to be other than the default, left opEquals alone, will have their AA
keys compile silently, and then do the completely wrong thing?

This was not a regression. It is an unfortunate step REQUIRED because of the
state of D before this change. Before the change, regardless of what the spec
said, only opCmp was used. opEquals was not used. If one defined opCmp, but not
opEquals, no error was raised, and it worked as expected. Now that we switched
to using opEquals instead of opCmp, even though the spec has warned such users
not to depend on implementation details such as this, it will break code.

In reverting this change, we have introduced a silent breaking regression.

I'll also note that the equivalent class requirements are still in there. In
other words, change TagIndex to a class, and you still get the error.

There was a lot of work and thought put into this before the release, I'm
surprised it was killed so quickly. I respectfully ask that it be reinstated.
If we all decide that such users should just be screwed for not reading the
fine print of the spec, then I guess that's what's been decided. At least,
remove the class error as well.

--

Reply via email to