@@ -87,8 +87,7 @@ func never_available_func(
87
87
) {
88
88
always ( )
89
89
never ( ) // expected-error {{'never()' is unavailable}}
90
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
91
- // expected-note@-1 {{add 'if #available' version check}}
90
+ osx_future ( )
92
91
osx ( )
93
92
osx_ios ( )
94
93
osx_extension ( )
@@ -105,8 +104,7 @@ func osx_func(
105
104
) {
106
105
always ( )
107
106
never ( ) // expected-error {{'never()' is unavailable}}
108
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
109
- // expected-note@-1 {{add 'if #available' version check}}
107
+ osx_future ( )
110
108
osx ( )
111
109
osx_ios ( )
112
110
osx_extension ( )
@@ -159,7 +157,7 @@ var never_var: (
159
157
) = (
160
158
always ( ) ,
161
159
never ( ) , // expected-error {{'never()' is unavailable}}
162
- osx_future ( ) , // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
160
+ osx_future ( ) ,
163
161
osx ( ) ,
164
162
osx_ios ( ) ,
165
163
osx_extension ( )
@@ -176,7 +174,7 @@ var osx_var: (
176
174
) = (
177
175
always ( ) ,
178
176
never ( ) , // expected-error {{'never()' is unavailable}}
179
- osx_future ( ) , // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
177
+ osx_future ( ) ,
180
178
osx ( ) ,
181
179
osx_ios ( ) ,
182
180
osx_extension ( )
@@ -218,7 +216,7 @@ struct AlwaysAvailableContainer { // expected-note 2 {{add @available attribute
218
216
struct NeverAvailableContainer { // expected-note 2 {{'NeverAvailableContainer' has been explicitly marked unavailable here}}
219
217
let always_var : AlwaysAvailable = always ( )
220
218
let never_var : NeverAvailable = never ( ) // expected-error {{'never()' is unavailable}}
221
- let osx_future_var : OSXFutureAvailable = osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
219
+ let osx_future_var : OSXFutureAvailable = osx_future ( )
222
220
let osx_var : OSXUnavailable = osx ( )
223
221
let osx_ios_var : MultiPlatformUnavailable = osx_ios ( )
224
222
let osx_extension_var : OSXAppExtensionsUnavailable = osx_extension ( )
@@ -228,7 +226,7 @@ struct NeverAvailableContainer { // expected-note 2 {{'NeverAvailableContainer'
228
226
struct OSXUnavailableContainer { // expected-note 2 {{'OSXUnavailableContainer' has been explicitly marked unavailable here}}
229
227
let always_var : AlwaysAvailable = always ( )
230
228
let never_var : NeverAvailable = never ( ) // expected-error {{'never()' is unavailable}}
231
- let osx_future_var : OSXFutureAvailable = osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
229
+ let osx_future_var : OSXFutureAvailable = osx_future ( )
232
230
let osx_var : OSXUnavailable = osx ( )
233
231
let osx_ios_var : MultiPlatformUnavailable = osx_ios ( )
234
232
let osx_extension_var : OSXAppExtensionsUnavailable = osx_extension ( )
@@ -301,8 +299,7 @@ extension ExtendMe {
301
299
) {
302
300
always ( )
303
301
never ( ) // expected-error {{'never()' is unavailable}}
304
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
305
- // expected-note@-1 {{add 'if #available' version check}}
302
+ osx_future ( )
306
303
osx ( )
307
304
osx_ios ( )
308
305
osx_extension ( )
@@ -319,8 +316,7 @@ extension ExtendMe {
319
316
) {
320
317
always ( )
321
318
never ( ) // expected-error {{'never()' is unavailable}}
322
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
323
- // expected-note@-1 {{add 'if #available' version check}}
319
+ osx_future ( )
324
320
osx ( )
325
321
osx_ios ( )
326
322
osx_extension ( )
@@ -337,15 +333,14 @@ extension ExtendMe {
337
333
) {
338
334
always ( )
339
335
never ( ) // expected-error {{'never()' is unavailable}}
340
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
341
- // expected-note@-1 {{add 'if #available' version check}}
336
+ osx_future ( )
342
337
osx ( )
343
338
osx_ios ( )
344
339
osx_extension ( )
345
340
}
346
341
347
342
@available ( OSXApplicationExtension, unavailable)
348
- func never_available_extension_osx_app_extension_method( // expected-note {{add @available attribute to enclosing instance method}}
343
+ func never_available_extension_osx_app_extension_method(
349
344
_: AlwaysAvailable ,
350
345
_: NeverAvailable ,
351
346
_: OSXFutureAvailable ,
@@ -355,8 +350,7 @@ extension ExtendMe {
355
350
) {
356
351
always ( )
357
352
never ( ) // expected-error {{'never()' is unavailable}}
358
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
359
- // expected-note@-1 {{add 'if #available' version check}}
353
+ osx_future ( )
360
354
osx ( )
361
355
osx_ios ( )
362
356
osx_extension ( )
@@ -380,8 +374,7 @@ extension ExtendMe {
380
374
) {
381
375
always ( )
382
376
never ( ) // expected-error {{'never()' is unavailable}}
383
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
384
- // expected-note@-1 {{add 'if #available' version check}}
377
+ osx_future ( )
385
378
osx ( )
386
379
osx_ios ( )
387
380
osx_extension ( )
@@ -398,8 +391,7 @@ extension ExtendMe {
398
391
) {
399
392
always ( )
400
393
never ( ) // expected-error {{'never()' is unavailable}}
401
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
402
- // expected-note@-1 {{add 'if #available' version check}}
394
+ osx_future ( )
403
395
osx ( )
404
396
osx_ios ( )
405
397
osx_extension ( )
@@ -416,15 +408,14 @@ extension ExtendMe {
416
408
) {
417
409
always ( )
418
410
never ( ) // expected-error {{'never()' is unavailable}}
419
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
420
- // expected-note@-1 {{add 'if #available' version check}}
411
+ osx_future ( )
421
412
osx ( )
422
413
osx_ios ( )
423
414
osx_extension ( )
424
415
}
425
416
426
417
@available ( OSXApplicationExtension, unavailable)
427
- func osx_extension_osx_app_extension_method( // expected-note {{add @available attribute to enclosing instance method}}
418
+ func osx_extension_osx_app_extension_method(
428
419
_: AlwaysAvailable ,
429
420
_: NeverAvailable ,
430
421
_: OSXFutureAvailable ,
@@ -434,8 +425,7 @@ extension ExtendMe {
434
425
) {
435
426
always ( )
436
427
never ( ) // expected-error {{'never()' is unavailable}}
437
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
438
- // expected-note@-1 {{add 'if #available' version check}}
428
+ osx_future ( )
439
429
osx ( )
440
430
osx_ios ( )
441
431
osx_extension ( )
@@ -477,8 +467,7 @@ extension ExtendMe { // expected-note * {{add @available attribute to enclosing
477
467
) {
478
468
always ( )
479
469
never ( ) // expected-error {{'never()' is unavailable}}
480
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
481
- // expected-note@-1 {{add 'if #available' version check}}
470
+ osx_future ( )
482
471
osx ( )
483
472
osx_ios ( )
484
473
osx_extension ( )
@@ -495,8 +484,7 @@ extension ExtendMe { // expected-note * {{add @available attribute to enclosing
495
484
) {
496
485
always ( )
497
486
never ( ) // expected-error {{'never()' is unavailable}}
498
- osx_future ( ) // expected-error {{'osx_future()' is only available in macOS 99 or newer}}
499
- // expected-note@-1 {{add 'if #available' version check}}
487
+ osx_future ( )
500
488
osx ( )
501
489
osx_ios ( )
502
490
osx_extension ( )
@@ -534,7 +522,7 @@ func available_func_call_extension_methods(_ e: ExtendMe) { // expected-note {{a
534
522
}
535
523
536
524
@available ( OSX, obsoleted: 10.9 )
537
- struct OSXObsoleted { } // expected-note 2 {{'OSXObsoleted' was obsoleted in macOS 10.9}}
525
+ struct OSXObsoleted { } // expected-note 4 {{'OSXObsoleted' was obsoleted in macOS 10.9}}
538
526
539
527
@available ( OSX, unavailable)
540
528
@available ( OSX, introduced: 99 )
@@ -561,17 +549,46 @@ func osx_unavailable_func(
561
549
OSXUnavailableAndIntroducedInFutureSameAttribute ,
562
550
OSXIntroducedInFutureAndUnavailable
563
551
) {
564
- // FIXME: [availability] Stop diagnosing potential unavailability or obsoletion in an unavailable context.
565
- _ = OSXFutureAvailable ( ) // expected-error {{'OSXFutureAvailable' is only available in macOS 99 or newer}}
566
- // expected-note@-1 {{add 'if #available' version check}}
552
+ // FIXME: [availability] Stop diagnosing obsoletion in an unavailable context.
553
+ _ = OSXFutureAvailable ( )
567
554
_ = OSXObsoleted ( ) // expected-error {{'OSXObsoleted' is unavailable in macOS}}
568
555
_ = OSXUnavailableAndIntroducedInFuture ( )
569
556
_ = OSXUnavailableAndIntroducedInFutureSameAttribute ( )
570
557
_ = OSXIntroducedInFutureAndUnavailable ( )
571
558
572
559
func takesType< T> ( _ t: T . Type ) { }
573
- takesType ( OSXFutureAvailable . self) // expected-error {{'OSXFutureAvailable' is only available in macOS 99 or newer}}
574
- // expected-note@-1 {{add 'if #available' version check}}
560
+ takesType ( OSXFutureAvailable . self)
561
+ takesType ( OSXObsoleted . self) // expected-error {{'OSXObsoleted' is unavailable in macOS}}
562
+ takesType ( OSXUnavailableAndIntroducedInFuture . self)
563
+ takesType ( OSXUnavailableAndIntroducedInFutureSameAttribute . self)
564
+ takesType ( OSXIntroducedInFutureAndUnavailable . self)
565
+
566
+ return ( s1, s2, s3, s4, s5)
567
+ }
568
+
569
+ @available ( OSX, unavailable, introduced: 99 )
570
+ func osx_unavailable_and_introduced_func(
571
+ _ s1: OSXFutureAvailable ,
572
+ _ s2: OSXObsoleted ,
573
+ _ s3: OSXUnavailableAndIntroducedInFuture ,
574
+ _ s4: OSXUnavailableAndIntroducedInFutureSameAttribute ,
575
+ _ s5: OSXIntroducedInFutureAndUnavailable ,
576
+ ) -> (
577
+ OSXFutureAvailable ,
578
+ OSXObsoleted ,
579
+ OSXUnavailableAndIntroducedInFuture ,
580
+ OSXUnavailableAndIntroducedInFutureSameAttribute ,
581
+ OSXIntroducedInFutureAndUnavailable
582
+ ) {
583
+ // FIXME: [availability] Stop diagnosing obsoletion in an unavailable context.
584
+ _ = OSXFutureAvailable ( )
585
+ _ = OSXObsoleted ( ) // expected-error {{'OSXObsoleted' is unavailable in macOS}}
586
+ _ = OSXUnavailableAndIntroducedInFuture ( )
587
+ _ = OSXUnavailableAndIntroducedInFutureSameAttribute ( )
588
+ _ = OSXIntroducedInFutureAndUnavailable ( )
589
+
590
+ func takesType< T> ( _ t: T . Type ) { }
591
+ takesType ( OSXFutureAvailable . self)
575
592
takesType ( OSXObsoleted . self) // expected-error {{'OSXObsoleted' is unavailable in macOS}}
576
593
takesType ( OSXUnavailableAndIntroducedInFuture . self)
577
594
takesType ( OSXUnavailableAndIntroducedInFutureSameAttribute . self)
0 commit comments