File: unguarded-availability-maccatalyst.m

package info (click to toggle)
llvm-toolchain-15 1%3A15.0.6-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,554,644 kB
  • sloc: cpp: 5,922,452; ansic: 1,012,136; asm: 674,362; python: 191,568; objc: 73,855; f90: 42,327; lisp: 31,913; pascal: 11,973; javascript: 10,144; sh: 9,421; perl: 7,447; ml: 5,527; awk: 3,523; makefile: 2,520; xml: 885; cs: 573; fortran: 567
file content (91 lines) | stat: -rw-r--r-- 3,428 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// RUN: %clang_cc1 -triple x86_64-apple-ios14-macabi -fblocks -fsyntax-only -verify %s
// RUN: %clang_cc1 -xobjective-c++ -triple x86_64-apple-ios14-macabi -fblocks -fsyntax-only -verify %s

// RUN: %clang_cc1 -triple x86_64-apple-ios14.1-macabi -DNO_WARNING -fblocks -fsyntax-only -verify %s

#ifdef NO_WARNING
  // expected-no-diagnostics
#endif

#define AVAILABLE_PREV __attribute__((availability(macCatalyst, introduced = 13.1)))
#define AVAILABLE_CURRENT __attribute__((availability(macCatalyst, introduced = 14)))
#define AVAILABLE_NEXT __attribute__((availability(macCatalyst, introduced = 14.1)))

void previouslyAvailable(void) AVAILABLE_PREV;
void currentlyAvailable(void) AVAILABLE_CURRENT;
void willBeAvailabile(void) AVAILABLE_NEXT;
#ifndef NO_WARNING
// expected-note@-2 {{'willBeAvailabile' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14}}
#endif


typedef struct {

} Record AVAILABLE_NEXT;
#ifndef NO_WARNING
// expected-note@-2 {{'Record' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14}}
#endif

AVAILABLE_PREV
Record var;
#ifndef NO_WARNING
// expected-warning@-2 {{'Record' is only available on macCatalyst 14.1 or newer}}
// expected-note@-3 {{annotate 'var' with an availability attribute to silence this warnin}}
#endif

AVAILABLE_NEXT
Record var2;

void test(void) {
  previouslyAvailable();
  currentlyAvailable();
  willBeAvailabile();
#ifndef NO_WARNING
  // expected-warning@-2 {{'willBeAvailabile' is only available on macCatalyst 14.1 or newer}}
  // expected-note@-3 {{enclose 'willBeAvailabile' in an @available check to silence this warning}}
#endif
  if (@available(maccatalyst 14.1, *))
    willBeAvailabile(); // OK
  if (@available(ios 14.1, *))
    willBeAvailabile(); // Also OK
  if (@available(macCatalyst 14.1, *))
    willBeAvailabile(); // OK
}

void previouslyAvailableIOS(void) __attribute__((availability(ios, introduced = 10)));
void currentlyAvailableIOS(void) __attribute__((availability(ios, introduced = 14)));
void willBeAvailabileIOS(void) __attribute__((availability(ios, introduced = 14.1)));
#ifndef NO_WARNING
// expected-note@-2 {{'willBeAvailabileIOS' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14}}
#endif

void testIOSAvailabilityAlsoWorks(void) {
  previouslyAvailableIOS();
  currentlyAvailableIOS();
  willBeAvailabileIOS();
#ifndef NO_WARNING
  // expected-warning@-2 {{'willBeAvailabileIOS' is only available on macCatalyst 14.1 or newer}}
  // expected-note@-3 {{enclose 'willBeAvailabileIOS' in an @available check to silence this warning}}
#endif
  if (@available(macCatalyst 14.1, *))
    willBeAvailabileIOS(); // OK
  if (@available(ios 14.1, *))
    willBeAvailabile(); // Also OK
}

typedef struct {

} Record2 __attribute__((availability(ios, introduced = 14.1)));
#ifndef NO_WARNING
// expected-note@-2 {{'Record2' has been marked as being introduced in macCatalyst 14.1 here, but the deployment target is macCatalyst 14}}
#endif

__attribute__((availability(ios, introduced = 10)))
Record2 var11;
#ifndef NO_WARNING
// expected-warning@-2 {{'Record2' is only available on macCatalyst 14.1 or newer}}
// expected-note@-3 {{annotate 'var11' with an availability attribute to silence this warnin}}
#endif

__attribute__((availability(ios, introduced = 14.1)))
Record2 var12;