[Foundation] Fix nullability in NSLocale.#24433
Conversation
This is file 36 of 47 files with nullability disabled in Foundation. Changes: - Enabled nullability - Added proper XML documentation for all public members - Made return types nullable where appropriate - Added ArgumentNullException.ThrowIfNull checks for method parameters - Added see cref attributes for better documentation cross-referencing - Add a few missing NullAllowed attributes. Contributes towards #17285.
There was a problem hiding this comment.
Pull request overview
This PR enables nullable reference types for the NSLocale class in Foundation, which is part of a broader effort to enable nullability across the Foundation framework. The changes add proper nullability annotations, comprehensive XML documentation, and fix missing NullAllowed attributes on return types.
Key changes:
- Enabled nullable reference types by adding
#nullable enable - Replaced placeholder XML documentation with detailed descriptions for all public properties and methods
- Made return types nullable where appropriate based on Apple's API behavior
- Added
ArgumentNullException.ThrowIfNullchecks for non-nullable parameters in public methods
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| tests/xtro-sharpie/api-annotations-dotnet/common-Foundation.ignore | Removed two ignore entries for missing NullAllowed attributes on ObjectForKey and DisplayNameForKey, as these are now properly annotated |
| src/foundation.cs | Added [return: NullAllowed] attributes to ObjectForKey and DisplayNameForKey internal methods to indicate they can return null |
| src/Foundation/NSLocale.cs | Enabled nullability, updated all properties to be nullable, added comprehensive XML documentation, added null checks for method parameters, and improved UsesMetricSystem implementation to handle null gracefully |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
✅ [CI Build #c428f79] Build passed (Build packages) ✅Pipeline on Agent |
✅ [CI Build #c428f79] Build passed (Build macOS tests) ✅Pipeline on Agent |
💻 [CI Build #c428f79] Tests on macOS M1 - Mac Monterey (12) passed 💻✅ All tests on macOS M1 - Mac Monterey (12) passed. Pipeline on Agent |
💻 [CI Build #c428f79] Tests on macOS arm64 - Mac Sequoia (15) passed 💻✅ All tests on macOS arm64 - Mac Sequoia (15) passed. Pipeline on Agent |
💻 [CI Build #c428f79] Tests on macOS arm64 - Mac Tahoe (26) passed 💻✅ All tests on macOS arm64 - Mac Tahoe (26) passed. Pipeline on Agent |
💻 [CI Build #c428f79] Tests on macOS M1 - Mac Ventura (13) passed 💻✅ All tests on macOS M1 - Mac Ventura (13) passed. Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
✅ [PR Build #c428f79] Build passed (Detect API changes) ✅Pipeline on Agent |
This comment has been minimized.
This comment has been minimized.
✅ API diff for current PR / commitNET (empty diffs)✅ API diff vs stableNET (empty diffs)ℹ️ Generator diffGenerator Diff: vsdrops (html) vsdrops (raw diff) gist (raw diff) - Please review changes) Pipeline on Agent |
💻 [CI Build #c428f79] Tests on macOS X64 - Mac Sonoma (14) passed 💻✅ All tests on macOS X64 - Mac Sonoma (14) passed. Pipeline on Agent |
🚀 [CI Build #c428f79] Test results 🚀Test results✅ All tests passed on VSTS: test results. 🎉 All 117 tests passed 🎉 Tests counts✅ cecil: All 1 tests passed. Html Report (VSDrops) Download Pipeline on Agent |
This is file 36 of 47 files with nullability disabled in Foundation.
Changes:
Contributes towards #17285.