@@ -32,6 +32,9 @@ public enum DarwinPlatform: Hashable {
32
32
/// watchOS, corresponding to the `watchos` OS name.
33
33
case watchOS( EnvironmentWithoutCatalyst )
34
34
35
+ /// visionOS, corresponding to the `visionos` OS name.
36
+ case visionOS( EnvironmentWithoutCatalyst )
37
+
35
38
/// The most general form of environment information attached to a
36
39
/// `DarwinPlatform`.
37
40
///
@@ -76,6 +79,9 @@ public enum DarwinPlatform: Hashable {
76
79
case . watchOS:
77
80
guard let withoutCatalyst = environment. withoutCatalyst else { return nil }
78
81
return . watchOS( withoutCatalyst)
82
+ case . visionOS:
83
+ guard let withoutCatalyst = environment. withoutCatalyst else { return nil }
84
+ return . visionOS( withoutCatalyst)
79
85
}
80
86
}
81
87
@@ -97,6 +103,10 @@ public enum DarwinPlatform: Hashable {
97
103
return " watchOS "
98
104
case . watchOS( . simulator) :
99
105
return " watchOS Simulator "
106
+ case . visionOS( . device) :
107
+ return " visionOS "
108
+ case . visionOS( . simulator) :
109
+ return " visionOS Simulator "
100
110
}
101
111
}
102
112
@@ -120,6 +130,10 @@ public enum DarwinPlatform: Hashable {
120
130
return " watchos "
121
131
case . watchOS( . simulator) :
122
132
return " watchsimulator "
133
+ case . visionOS( . device) :
134
+ return " xros "
135
+ case . visionOS( . simulator) :
136
+ return " xrsimulator "
123
137
}
124
138
}
125
139
@@ -142,6 +156,10 @@ public enum DarwinPlatform: Hashable {
142
156
return " watchos "
143
157
case . watchOS( . simulator) :
144
158
return " watchos-simulator "
159
+ case . visionOS( . device) :
160
+ return " xros "
161
+ case . visionOS( . simulator) :
162
+ return " xros-simulator "
145
163
}
146
164
}
147
165
@@ -165,6 +183,10 @@ public enum DarwinPlatform: Hashable {
165
183
return " watchos "
166
184
case . watchOS( . simulator) :
167
185
return " watchossim "
186
+ case . visionOS( . device) :
187
+ return " xros "
188
+ case . visionOS( . simulator) :
189
+ return " xrossim "
168
190
}
169
191
}
170
192
}
@@ -197,6 +219,8 @@ extension Triple {
197
219
return _iOSVersion
198
220
case . watchOS:
199
221
return _watchOSVersion
222
+ case . visionOS:
223
+ return _visionOSVersion
200
224
}
201
225
}
202
226
@@ -223,6 +247,8 @@ extension Triple {
223
247
return . watchOS( makeEnvironment ( ) )
224
248
case . tvos:
225
249
return . tvOS( makeEnvironment ( ) )
250
+ case . visionos:
251
+ return . visionOS( makeEnvironment ( ) )
226
252
default :
227
253
return nil
228
254
}
@@ -272,6 +298,8 @@ extension Triple {
272
298
}
273
299
274
300
return osVersion
301
+ case . visionOS( _) :
302
+ return _visionOSVersion
275
303
}
276
304
}
277
305
@@ -285,7 +313,7 @@ extension Triple {
285
313
switch os {
286
314
case nil :
287
315
fatalError ( " unknown OS " )
288
- case . darwin, . macosx, . ios, . tvos, . watchos:
316
+ case . darwin, . macosx, . ios, . tvos, . watchos, . visionos :
289
317
guard let darwinPlatform = darwinPlatform else {
290
318
fatalError ( " unsupported darwin platform kind? " )
291
319
}
@@ -361,6 +389,7 @@ extension Triple {
361
389
public let iOS : Availability
362
390
public let tvOS : Availability
363
391
public let watchOS : Availability
392
+ public var visionOS : Availability
364
393
365
394
// TODO: We should have linux, windows, etc.
366
395
public let nonDarwin : Bool
@@ -379,8 +408,14 @@ extension Triple {
379
408
self . tvOS = tvOS
380
409
self . watchOS = watchOS
381
410
self . nonDarwin = nonDarwin
411
+ self . visionOS = iOS
382
412
}
383
413
414
+ public func withVisionOS( _ visionOS: Availability ) -> FeatureAvailability {
415
+ var res = self
416
+ res. visionOS = visionOS
417
+ return res
418
+ }
384
419
/// Returns the version when the feature was introduced on the specified Darwin
385
420
/// platform, or `.unavailable` if the feature has not been introduced there.
386
421
public subscript( darwinPlatform: DarwinPlatform ) -> Availability {
@@ -393,6 +428,8 @@ extension Triple {
393
428
return tvOS
394
429
case . watchOS:
395
430
return watchOS
431
+ case . visionOS:
432
+ return visionOS
396
433
}
397
434
}
398
435
}
0 commit comments