Fix Color equality for derived types - #36075
Closed
jfversluis wants to merge 1 commit into
Closed
Conversation
Keep Color as a class while preserving the immutability metadata, and align hash codes with byte-precision equality so derived Color values compare correctly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 36075Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 36075" |
Member
Author
|
Closing this because it was opened against main by mistake. The regression exists on net11.0; superseded by #36076. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Fixes #36034.
This restores the pre-.NET 11 Preview 3 behavior where a
Colorsubclass with the same ARGB value compares equal to a baseColorinstance. The regression was introduced by #33824 / commit 797df24 whenColorwas converted to arecord class, which added recordEqualityContractchecks for derived types.The fix keeps
Coloras a normal class, preserves the[ImmutableObject(true)]metadata intended by #33824, and alignsGetHashCode()with the existing byte-precision equality contract.Added regression coverage for base-vs-derived
Colorequality in both directions,EqualityComparer<Color>.Default, and matching hash codes.cc @AdamEssenmacher, could you review this since you reported the issue?