diff options
| author | Christian Cleberg <[email protected]> | 2026-08-07 17:33:46 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-08-07 17:33:46 -0500 |
| commit | 283fbf00fdffd64c924b6cb22c84e803b718f078 (patch) | |
| tree | f6603518ba62134faa699d864003b90464930ab9 /Hutch/Models/Project.swift | |
| parent | b2a1265cadccc34cbdab71b9ed638b908cac9f62 (diff) | |
| download | hutch-283fbf00fdffd64c924b6cb22c84e803b718f078.tar.gz hutch-283fbf00fdffd64c924b6cb22c84e803b718f078.tar.bz2 hutch-283fbf00fdffd64c924b6cb22c84e803b718f078.zip | |
Adopt Swift 6 language mode
Flip SWIFT_VERSION to 6.0 (keeping SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor)
and resolve every resulting diagnostic. Mechanical, no behaviour change:
- Models: pure value types in Models/ and utility extensions (Date, DateFormatter,
SRHTWebURL) marked nonisolated so the nonisolated networking layer can use them.
- App Intents: stored 'static var' (title/description/openAppWhenRun/
typeDisplayRepresentation/defaultQuery/caseDisplayRepresentations) -> 'static let';
drop the invalid @retroactive on the in-module LookupType: AppEnum.
- Sendable dicts: 'nil as String? as Any' -> 'nil as String? as any Sendable'.
- UserDefaults: retroactive @unchecked Sendable (documented thread-safe).
- WidgetKit completion handlers rebound nonisolated(unsafe) to cross into Task {};
TipStoreViewModel task handle is @ObservationIgnored nonisolated(unsafe) for
its nonisolated deinit.
- Tests run on @MainActor; a few constant fixtures marked nonisolated for use in
@Sendable stub closures.
Builds and the full suite are clean in Swift 6 mode. Roadmap updated.
Diffstat (limited to 'Hutch/Models/Project.swift')
| -rw-r--r-- | Hutch/Models/Project.swift | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/Hutch/Models/Project.swift b/Hutch/Models/Project.swift index 8f5aa68..bd1a688 100644 --- a/Hutch/Models/Project.swift +++ b/Hutch/Models/Project.swift @@ -1,7 +1,7 @@ import Foundation -struct Project: Identifiable, Hashable, Sendable { - struct MailingList: Identifiable, Hashable, Sendable { +nonisolated struct Project: Identifiable, Hashable, Sendable { + nonisolated struct MailingList: Identifiable, Hashable, Sendable { let id: String let name: String let description: String? @@ -22,8 +22,8 @@ struct Project: Identifiable, Hashable, Sendable { } } - struct SourceRepo: Identifiable, Hashable, Sendable { - enum RepoType: String, Decodable, Sendable { + nonisolated struct SourceRepo: Identifiable, Hashable, Sendable { + nonisolated enum RepoType: String, Decodable, Sendable { case git = "GIT" case hg = "HG" @@ -47,7 +47,7 @@ struct Project: Identifiable, Hashable, Sendable { } } - struct Tracker: Identifiable, Hashable, Sendable { + nonisolated struct Tracker: Identifiable, Hashable, Sendable { let id: String let name: String let description: String? @@ -72,7 +72,7 @@ struct Project: Identifiable, Hashable, Sendable { let isFullyLoaded: Bool /// Identity and display fields for a project. - struct Metadata: Sendable, Hashable { + nonisolated struct Metadata: Sendable, Hashable { let id: String let name: String let description: String? @@ -82,7 +82,7 @@ struct Project: Identifiable, Hashable, Sendable { let updated: Date } - struct Resources: Sendable, Hashable { + nonisolated struct Resources: Sendable, Hashable { let mailingLists: [MailingList] let sources: [SourceRepo] let trackers: [Tracker] @@ -171,7 +171,7 @@ struct Project: Identifiable, Hashable, Sendable { } } -extension Project.MailingList { +nonisolated extension Project.MailingList { var displayName: String { Project.normalizedText(name) ?? "Untitled Mailing List" } @@ -185,7 +185,7 @@ extension Project.MailingList { } } -extension Project.SourceRepo { +nonisolated extension Project.SourceRepo { var displayName: String { Project.normalizedText(name) ?? "Untitled Repository" } @@ -203,7 +203,7 @@ extension Project.SourceRepo { } } -extension Project.Tracker { +nonisolated extension Project.Tracker { var displayName: String { Project.normalizedText(name) ?? "Untitled Tracker" } @@ -221,13 +221,13 @@ extension Project.Tracker { } } -extension String { +nonisolated extension String { var srhtUsername: String { hasPrefix("~") ? String(dropFirst()) : self } } -extension Visibility { +nonisolated extension Visibility { var displayName: String { switch self { case .publicVisibility: |
