@@ -43,11 +43,11 @@ import SwiftUI
43
43
/// - Note: ``TextState`` does not support _all_ `LocalizedStringKey` permutations at this time
44
44
/// (interpolated `SwiftUI.Image`s, for example). ``TextState`` also uses reflection to determine
45
45
/// `LocalizedStringKey` equatability, so be mindful of edge cases.
46
- public struct TextState : Equatable , Hashable {
46
+ public struct TextState : Equatable , Hashable , Sendable {
47
47
fileprivate var modifiers : [ Modifier ] = [ ]
48
48
fileprivate let storage : Storage
49
49
50
- fileprivate enum Modifier : Equatable , Hashable {
50
+ fileprivate enum Modifier : Equatable , Hashable , Sendable {
51
51
case accessibilityHeading( AccessibilityHeadingLevel )
52
52
case accessibilityLabel( TextState )
53
53
case accessibilityTextContentType( AccessibilityTextContentType )
@@ -70,7 +70,7 @@ public struct TextState: Equatable, Hashable {
70
70
case underline( isActive: Bool , pattern: LineStylePattern ? , color: Color ? )
71
71
}
72
72
73
- public enum FontWidth : String , Equatable , Hashable {
73
+ public enum FontWidth : String , Equatable , Hashable , Sendable {
74
74
case compressed
75
75
case condensed
76
76
case expanded
@@ -89,7 +89,7 @@ public struct TextState: Equatable, Hashable {
89
89
#endif
90
90
}
91
91
92
- public enum LineStylePattern : String , Equatable , Hashable {
92
+ public enum LineStylePattern : String , Equatable , Hashable , Sendable {
93
93
case dash
94
94
case dashDot
95
95
case dashDotDot
@@ -108,7 +108,9 @@ public struct TextState: Equatable, Hashable {
108
108
}
109
109
}
110
110
111
- fileprivate enum Storage : Equatable , Hashable {
111
+ // NB: LocalizedStringKey is documented as being Sendable, but its conformance appears to be
112
+ // unavailable.
113
+ fileprivate enum Storage : Equatable , Hashable , @unchecked Sendable {
112
114
indirect case concatenated( TextState , TextState )
113
115
case localized( LocalizedStringKey , tableName: String ? , bundle: Bundle ? , comment: StaticString ? )
114
116
case verbatim( String )
@@ -305,7 +307,7 @@ extension TextState {
305
307
// MARK: Accessibility
306
308
307
309
extension TextState {
308
- public enum AccessibilityTextContentType : String , Equatable , Hashable {
310
+ public enum AccessibilityTextContentType : String , Equatable , Hashable , Sendable {
309
311
case console, fileSystem, messaging, narrative, plain, sourceCode, spreadsheet, wordProcessing
310
312
311
313
#if compiler(>=5.5.1)
@@ -325,7 +327,7 @@ extension TextState {
325
327
#endif
326
328
}
327
329
328
- public enum AccessibilityHeadingLevel : String , Equatable , Hashable {
330
+ public enum AccessibilityHeadingLevel : String , Equatable , Hashable , Sendable {
329
331
case h1, h2, h3, h4, h5, h6, unspecified
330
332
331
333
#if compiler(>=5.5.1)
0 commit comments