[LoopVectorizer] Add support for chaining partial reductions (#120272)
[llvm-project.git] / clang / test / ExtractAPI / inherited_availability.m
blobc24e7fa8e208f035272a18d110de269383e307d6
1 // RUN: rm -rf %t
2 // RUN: %clang_cc1 -extract-api --pretty-sgf --emit-sgf-symbol-labels-for-testing -triple arm64-apple-macosx \
3 // RUN:   -x objective-c-header %s -o %t/output.symbols.json -verify
6 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix A
7 __attribute__((availability(macos, introduced=9.0, deprecated=12.0, obsoleted=20.0)))
8 @interface A
9 // A-LABEL: "!testLabel": "c:objc(cs)A"
10 // A:      "availability": [
11 // A-NEXT:   {
12 // A-NEXT:     "deprecated": {
13 // A-NEXT:       "major": 12,
14 // A-NEXT:       "minor": 0,
15 // A-NEXT:       "patch": 0
16 // A-NEXT:     }
17 // A-NEXT:     "domain": "macos"
18 // A-NEXT:     "introduced": {
19 // A-NEXT:       "major": 9,
20 // A-NEXT:       "minor": 0,
21 // A-NEXT:       "patch": 0
22 // A-NEXT:     }
23 // A-NEXT:     "obsoleted": {
24 // A-NEXT:       "major": 20,
25 // A-NEXT:       "minor": 0,
26 // A-NEXT:       "patch": 0
27 // A-NEXT:     }
28 // A-NEXT:   }
29 // A-NEXT: ]
31 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix CP
32 @property(class) int CP;
33 // CP-LABEL: "!testLabel": "c:objc(cs)A(cpy)CP"
34 // CP:      "availability": [
35 // CP-NEXT:   {
36 // CP-NEXT:     "deprecated": {
37 // CP-NEXT:       "major": 12,
38 // CP-NEXT:       "minor": 0,
39 // CP-NEXT:       "patch": 0
40 // CP-NEXT:     }
41 // CP-NEXT:     "domain": "macos"
42 // CP-NEXT:     "introduced": {
43 // CP-NEXT:       "major": 9,
44 // CP-NEXT:       "minor": 0,
45 // CP-NEXT:       "patch": 0
46 // CP-NEXT:     }
47 // CP-NEXT:     "obsoleted": {
48 // CP-NEXT:       "major": 20,
49 // CP-NEXT:       "minor": 0,
50 // CP-NEXT:       "patch": 0
51 // CP-NEXT:     }
52 // CP-NEXT:   }
53 // CP-NEXT: ]
55 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix IP
56 @property int IP;
57 // IP-LABEL: "!testLabel": "c:objc(cs)A(py)IP"
58 // IP:      "availability": [
59 // IP-NEXT:   {
60 // IP-NEXT:     "deprecated": {
61 // IP-NEXT:       "major": 12,
62 // IP-NEXT:       "minor": 0,
63 // IP-NEXT:       "patch": 0
64 // IP-NEXT:     }
65 // IP-NEXT:     "domain": "macos"
66 // IP-NEXT:     "introduced": {
67 // IP-NEXT:       "major": 9,
68 // IP-NEXT:       "minor": 0,
69 // IP-NEXT:       "patch": 0
70 // IP-NEXT:     }
71 // IP-NEXT:     "obsoleted": {
72 // IP-NEXT:       "major": 20,
73 // IP-NEXT:       "minor": 0,
74 // IP-NEXT:       "patch": 0
75 // IP-NEXT:     }
76 // IP-NEXT:   }
77 // IP-NEXT: ]
79 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix MR
80 @property int moreRestrictive __attribute__((availability(macos, introduced=10.0, deprecated=11.0, obsoleted=19.0)));
81 // MR-LABEL: "!testLabel": "c:objc(cs)A(py)moreRestrictive"
82 // MR:      "availability": [
83 // MR-NEXT:   {
84 // MR-NEXT:     "deprecated": {
85 // MR-NEXT:       "major": 11,
86 // MR-NEXT:       "minor": 0,
87 // MR-NEXT:       "patch": 0
88 // MR-NEXT:     }
89 // MR-NEXT:     "domain": "macos"
90 // MR-NEXT:     "introduced": {
91 // MR-NEXT:       "major": 10,
92 // MR-NEXT:       "minor": 0,
93 // MR-NEXT:       "patch": 0
94 // MR-NEXT:     }
95 // MR-NEXT:     "obsoleted": {
96 // MR-NEXT:       "major": 19,
97 // MR-NEXT:       "minor": 0,
98 // MR-NEXT:       "patch": 0
99 // MR-NEXT:     }
100 // MR-NEXT:   }
101 // MR-NEXT: ]
103 @end
105 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix B
106 __attribute__((deprecated("B is deprecated")))
107 @interface B
108 // B-LABEL: "!testLabel": "c:objc(cs)B"
109 // B:      "availability": [
110 // B-NEXT:   {
111 // B-NEXT:     "domain": "*"
112 // B-NEXT:     "isUnconditionallyDeprecated": true
113 // B-NEXT:   }
114 // B-NEXT: ]
116 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix BIP
117 @property int BIP;
118 // BIP-LABEL: "!testLabel": "c:objc(cs)B(py)BIP"
119 // BIP:      "availability": [
120 // BIP-NEXT:   {
121 // BIP-NEXT:     "domain": "*"
122 // BIP-NEXT:     "isUnconditionallyDeprecated": true
123 // BIP-NEXT:   }
124 // BIP-NEXT: ]
125 @end
127 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix C
128 __attribute__((availability(macos, unavailable)))
129 @interface C
130 // C-LABEL: "!testLabel": "c:objc(cs)C"
131 // C:      "availability": [
132 // C-NEXT:   {
133 // C-NEXT:     "domain": "macos"
134 // C-NEXT:     "isUnconditionallyUnavailable": true
135 // C-NEXT:   }
136 // C-NEXT: ]
138 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix CIP
139 @property int CIP;
140 // CIP-LABEL: "!testLabel": "c:objc(cs)C(py)CIP"
141 // CIP:      "availability": [
142 // CIP-NEXT:   {
143 // CIP-NEXT:     "domain": "macos"
144 // CIP-NEXT:     "isUnconditionallyUnavailable": true
145 // CIP-NEXT:   }
146 // CIP-NEXT: ]
147 @end
149 @interface D
150 // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix DIP
151 @property int DIP __attribute__((availability(macos, introduced=10.0, deprecated=11.0, obsoleted=19.0)));
152 // DIP-LABEL: "!testLabel": "c:objc(cs)D(py)DIP"
153 // DIP:      "availability": [
154 // DIP-NEXT:   {
155 // DIP-NEXT:     "deprecated": {
156 // DIP-NEXT:       "major": 11,
157 // DIP-NEXT:       "minor": 0,
158 // DIP-NEXT:       "patch": 0
159 // DIP-NEXT:     }
160 // DIP-NEXT:     "domain": "macos"
161 // DIP-NEXT:     "introduced": {
162 // DIP-NEXT:       "major": 10,
163 // DIP-NEXT:       "minor": 0,
164 // DIP-NEXT:       "patch": 0
165 // DIP-NEXT:     }
166 // DIP-NEXT:     "obsoleted": {
167 // DIP-NEXT:       "major": 19,
168 // DIP-NEXT:       "minor": 0,
169 // DIP-NEXT:       "patch": 0
170 // DIP-NEXT:     }
171 // DIP-NEXT:   }
172 // DIP-NEXT: ]
173 @end
175 // expected-no-diagnostics