Fix [Record] HashableAttribute (runtime error) #1114
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Using
[Hashable(...)]
in[Record]
results in runtime error.Found this bug because I didn't use
[Hashable(...)]
but just[Eq(...)]
and[Ord(...)]
resulting in different hash codes.IMHO it's error-prone (and boilerplate) to require all three attributes for simple cases like the one shown in the test case.
GetHashCode maybe should be implemented by using the first existing of
I'm not sure whether
Ord
should (or does) fully superseedEq
which could result in a similar list for implementation ofEquals
. I often use [Record] types having one or more case insensitive string properties as keys for e.g.Map
andHashMap
or with.GroupBy(..)
.Edit: somehow related to #842 (CompareTo==0 vs. Equals==true)