-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Refactor WeakReferenceList/CopyOnWriteList as type-safe generic collections #10889
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #10889 +/- ##
===================================================
- Coverage 13.48885% 2.98844% -10.50041%
===================================================
Files 3317 3319 +2
Lines 664749 664828 +79
Branches 74643 74664 +21
===================================================
- Hits 89667 19868 -69799
- Misses 572488 644779 +72291
+ Partials 2594 181 -2413
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a tiny fix for coherence.
/// <summary> | ||
/// Insert an object into the List at the given index. | ||
/// Without any error checks. | ||
/// For use by derived classes that implement there own error checks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same fix as above
/// For use by derived classes that implement there own error checks. | |
/// For use by derived classes that implement their own error checks. |
Description
Refactors both
CopyOnWriteList
andWeakReferenceList
as generic type-safe collections.Both lists now support initialization with capacity argument, previously integers passed in (e.g. in
PropagateParentOwners
) would end up being boxed and the instance of the box being used as a lock. This clearly feels like a mistake.In
ResourceDictionaryDiagnostics
I've removed few static fields caching empty (readonly) arrays I didn' see in #10267.Regarding the removed null-checks:
as
casting pattern.null
in the first place.Since
ContainsOwner
is only called from within the three classes, we can remove the type checks and speed it up.Customer Impact
Improved performance a tiny bit, strongly-typed code and newer practices.
Regression
No.
Testing
Local build, unit tests, testing with sample apps including themes and templates.
Risk
Low to medium, I believe the changes are straightforward and understandable but happy to answer any questions (rather sooner than later).
Microsoft Reviewers: Open in CodeFlow