[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / AST / ast-dump-decl-context-json.cpp
blob0601732147a6330a08e52a66a8bd9ebfe6273fb3
1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
3 namespace Test {
5 namespace NS {
6 void Function();
8 void NS::Function() {}
10 struct S {
11 void Method();
13 void S::Method() {}
15 } // namespace Test
17 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
19 // CHECK-NOT: {{^}}Dumping
20 // CHECK: "kind": "NamespaceDecl",
21 // CHECK-NEXT: "loc": {
22 // CHECK-NEXT: "offset": {{[0-9]+}},
23 // CHECK-NEXT: "file": "{{.*}}",
24 // CHECK-NEXT: "line": 3,
25 // CHECK-NEXT: "col": 11,
26 // CHECK-NEXT: "tokLen": 4
27 // CHECK-NEXT: },
28 // CHECK-NEXT: "range": {
29 // CHECK-NEXT: "begin": {
30 // CHECK-NEXT: "offset": {{[0-9]+}},
31 // CHECK-NEXT: "col": 1,
32 // CHECK-NEXT: "tokLen": 9
33 // CHECK-NEXT: },
34 // CHECK-NEXT: "end": {
35 // CHECK-NEXT: "offset": {{[0-9]+}},
36 // CHECK-NEXT: "line": 15,
37 // CHECK-NEXT: "col": 1,
38 // CHECK-NEXT: "tokLen": 1
39 // CHECK-NEXT: }
40 // CHECK-NEXT: },
41 // CHECK-NEXT: "name": "Test",
42 // CHECK-NEXT: "inner": [
43 // CHECK-NEXT: {
44 // CHECK-NEXT: "id": "0x{{.*}}",
45 // CHECK-NEXT: "kind": "NamespaceDecl",
46 // CHECK-NEXT: "loc": {
47 // CHECK-NEXT: "offset": {{[0-9]+}},
48 // CHECK-NEXT: "line": 5,
49 // CHECK-NEXT: "col": 11,
50 // CHECK-NEXT: "tokLen": 2
51 // CHECK-NEXT: },
52 // CHECK-NEXT: "range": {
53 // CHECK-NEXT: "begin": {
54 // CHECK-NEXT: "offset": {{[0-9]+}},
55 // CHECK-NEXT: "col": 1,
56 // CHECK-NEXT: "tokLen": 9
57 // CHECK-NEXT: },
58 // CHECK-NEXT: "end": {
59 // CHECK-NEXT: "offset": {{[0-9]+}},
60 // CHECK-NEXT: "line": 7,
61 // CHECK-NEXT: "col": 1,
62 // CHECK-NEXT: "tokLen": 1
63 // CHECK-NEXT: }
64 // CHECK-NEXT: },
65 // CHECK-NEXT: "name": "NS",
66 // CHECK-NEXT: "inner": [
67 // CHECK-NEXT: {
68 // CHECK-NEXT: "id": "0x{{.*}}",
69 // CHECK-NEXT: "kind": "FunctionDecl",
70 // CHECK-NEXT: "loc": {
71 // CHECK-NEXT: "offset": {{[0-9]+}},
72 // CHECK-NEXT: "line": 6,
73 // CHECK-NEXT: "col": 6,
74 // CHECK-NEXT: "tokLen": 8
75 // CHECK-NEXT: },
76 // CHECK-NEXT: "range": {
77 // CHECK-NEXT: "begin": {
78 // CHECK-NEXT: "offset": {{[0-9]+}},
79 // CHECK-NEXT: "col": 1,
80 // CHECK-NEXT: "tokLen": 4
81 // CHECK-NEXT: },
82 // CHECK-NEXT: "end": {
83 // CHECK-NEXT: "offset": {{[0-9]+}},
84 // CHECK-NEXT: "col": 15,
85 // CHECK-NEXT: "tokLen": 1
86 // CHECK-NEXT: }
87 // CHECK-NEXT: },
88 // CHECK-NEXT: "name": "Function",
89 // CHECK-NEXT: "mangledName": "_ZN4Test2NS8FunctionEv",
90 // CHECK-NEXT: "type": {
91 // CHECK-NEXT: "qualType": "void ()"
92 // CHECK-NEXT: }
93 // CHECK-NEXT: }
94 // CHECK-NEXT: ]
95 // CHECK-NEXT: },
96 // CHECK-NEXT: {
97 // CHECK-NEXT: "id": "0x{{.*}}",
98 // CHECK-NEXT: "kind": "FunctionDecl",
99 // CHECK-NEXT: "loc": {
100 // CHECK-NEXT: "offset": {{[0-9]+}},
101 // CHECK-NEXT: "line": 8,
102 // CHECK-NEXT: "col": 10,
103 // CHECK-NEXT: "tokLen": 8
104 // CHECK-NEXT: },
105 // CHECK-NEXT: "range": {
106 // CHECK-NEXT: "begin": {
107 // CHECK-NEXT: "offset": {{[0-9]+}},
108 // CHECK-NEXT: "col": 1,
109 // CHECK-NEXT: "tokLen": 4
110 // CHECK-NEXT: },
111 // CHECK-NEXT: "end": {
112 // CHECK-NEXT: "offset": {{[0-9]+}},
113 // CHECK-NEXT: "col": 22,
114 // CHECK-NEXT: "tokLen": 1
115 // CHECK-NEXT: }
116 // CHECK-NEXT: },
117 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
118 // CHECK-NEXT: "previousDecl": "0x{{.*}}",
119 // CHECK-NEXT: "name": "Function",
120 // CHECK-NEXT: "mangledName": "_ZN4Test2NS8FunctionEv",
121 // CHECK-NEXT: "type": {
122 // CHECK-NEXT: "qualType": "void ()"
123 // CHECK-NEXT: },
124 // CHECK-NEXT: "inner": [
125 // CHECK-NEXT: {
126 // CHECK-NEXT: "id": "0x{{.*}}",
127 // CHECK-NEXT: "kind": "CompoundStmt",
128 // CHECK-NEXT: "range": {
129 // CHECK-NEXT: "begin": {
130 // CHECK-NEXT: "offset": {{[0-9]+}},
131 // CHECK-NEXT: "col": 21,
132 // CHECK-NEXT: "tokLen": 1
133 // CHECK-NEXT: },
134 // CHECK-NEXT: "end": {
135 // CHECK-NEXT: "offset": {{[0-9]+}},
136 // CHECK-NEXT: "col": 22,
137 // CHECK-NEXT: "tokLen": 1
138 // CHECK-NEXT: }
139 // CHECK-NEXT: }
140 // CHECK-NEXT: }
141 // CHECK-NEXT: ]
142 // CHECK-NEXT: },
143 // CHECK-NEXT: {
144 // CHECK-NEXT: "id": "0x{{.*}}",
145 // CHECK-NEXT: "kind": "CXXRecordDecl",
146 // CHECK-NEXT: "loc": {
147 // CHECK-NEXT: "offset": {{[0-9]+}},
148 // CHECK-NEXT: "line": 10,
149 // CHECK-NEXT: "col": 8,
150 // CHECK-NEXT: "tokLen": 1
151 // CHECK-NEXT: },
152 // CHECK-NEXT: "range": {
153 // CHECK-NEXT: "begin": {
154 // CHECK-NEXT: "offset": {{[0-9]+}},
155 // CHECK-NEXT: "col": 1,
156 // CHECK-NEXT: "tokLen": 6
157 // CHECK-NEXT: },
158 // CHECK-NEXT: "end": {
159 // CHECK-NEXT: "offset": {{[0-9]+}},
160 // CHECK-NEXT: "line": 12,
161 // CHECK-NEXT: "col": 1,
162 // CHECK-NEXT: "tokLen": 1
163 // CHECK-NEXT: }
164 // CHECK-NEXT: },
165 // CHECK-NEXT: "name": "S",
166 // CHECK-NEXT: "tagUsed": "struct",
167 // CHECK-NEXT: "completeDefinition": true,
168 // CHECK-NEXT: "definitionData": {
169 // CHECK-NEXT: "canConstDefaultInit": true,
170 // CHECK-NEXT: "canPassInRegisters": true,
171 // CHECK-NEXT: "copyAssign": {
172 // CHECK-NEXT: "hasConstParam": true,
173 // CHECK-NEXT: "implicitHasConstParam": true,
174 // CHECK-NEXT: "needsImplicit": true,
175 // CHECK-NEXT: "simple": true,
176 // CHECK-NEXT: "trivial": true
177 // CHECK-NEXT: },
178 // CHECK-NEXT: "copyCtor": {
179 // CHECK-NEXT: "hasConstParam": true,
180 // CHECK-NEXT: "implicitHasConstParam": true,
181 // CHECK-NEXT: "needsImplicit": true,
182 // CHECK-NEXT: "simple": true,
183 // CHECK-NEXT: "trivial": true
184 // CHECK-NEXT: },
185 // CHECK-NEXT: "defaultCtor": {
186 // CHECK-NEXT: "defaultedIsConstexpr": true,
187 // CHECK-NEXT: "exists": true,
188 // CHECK-NEXT: "isConstexpr": true,
189 // CHECK-NEXT: "needsImplicit": true,
190 // CHECK-NEXT: "trivial": true
191 // CHECK-NEXT: },
192 // CHECK-NEXT: "dtor": {
193 // CHECK-NEXT: "irrelevant": true,
194 // CHECK-NEXT: "needsImplicit": true,
195 // CHECK-NEXT: "simple": true,
196 // CHECK-NEXT: "trivial": true
197 // CHECK-NEXT: },
198 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true,
199 // CHECK-NEXT: "isAggregate": true,
200 // CHECK-NEXT: "isEmpty": true,
201 // CHECK-NEXT: "isLiteral": true,
202 // CHECK-NEXT: "isPOD": true,
203 // CHECK-NEXT: "isStandardLayout": true,
204 // CHECK-NEXT: "isTrivial": true,
205 // CHECK-NEXT: "isTriviallyCopyable": true,
206 // CHECK-NEXT: "moveAssign": {
207 // CHECK-NEXT: "exists": true,
208 // CHECK-NEXT: "needsImplicit": true,
209 // CHECK-NEXT: "simple": true,
210 // CHECK-NEXT: "trivial": true
211 // CHECK-NEXT: },
212 // CHECK-NEXT: "moveCtor": {
213 // CHECK-NEXT: "exists": true,
214 // CHECK-NEXT: "needsImplicit": true,
215 // CHECK-NEXT: "simple": true,
216 // CHECK-NEXT: "trivial": true
217 // CHECK-NEXT: }
218 // CHECK-NEXT: },
219 // CHECK-NEXT: "inner": [
220 // CHECK-NEXT: {
221 // CHECK-NEXT: "id": "0x{{.*}}",
222 // CHECK-NEXT: "kind": "CXXRecordDecl",
223 // CHECK-NEXT: "loc": {
224 // CHECK-NEXT: "offset": {{[0-9]+}},
225 // CHECK-NEXT: "line": 10,
226 // CHECK-NEXT: "col": 8,
227 // CHECK-NEXT: "tokLen": 1
228 // CHECK-NEXT: },
229 // CHECK-NEXT: "range": {
230 // CHECK-NEXT: "begin": {
231 // CHECK-NEXT: "offset": {{[0-9]+}},
232 // CHECK-NEXT: "col": 1,
233 // CHECK-NEXT: "tokLen": 6
234 // CHECK-NEXT: },
235 // CHECK-NEXT: "end": {
236 // CHECK-NEXT: "offset": {{[0-9]+}},
237 // CHECK-NEXT: "col": 8,
238 // CHECK-NEXT: "tokLen": 1
239 // CHECK-NEXT: }
240 // CHECK-NEXT: },
241 // CHECK-NEXT: "isImplicit": true,
242 // CHECK-NEXT: "name": "S",
243 // CHECK-NEXT: "tagUsed": "struct"
244 // CHECK-NEXT: },
245 // CHECK-NEXT: {
246 // CHECK-NEXT: "id": "0x{{.*}}",
247 // CHECK-NEXT: "kind": "CXXMethodDecl",
248 // CHECK-NEXT: "loc": {
249 // CHECK-NEXT: "offset": {{[0-9]+}},
250 // CHECK-NEXT: "line": 11,
251 // CHECK-NEXT: "col": 8,
252 // CHECK-NEXT: "tokLen": 6
253 // CHECK-NEXT: },
254 // CHECK-NEXT: "range": {
255 // CHECK-NEXT: "begin": {
256 // CHECK-NEXT: "offset": {{[0-9]+}},
257 // CHECK-NEXT: "col": 3,
258 // CHECK-NEXT: "tokLen": 4
259 // CHECK-NEXT: },
260 // CHECK-NEXT: "end": {
261 // CHECK-NEXT: "offset": {{[0-9]+}},
262 // CHECK-NEXT: "col": 15,
263 // CHECK-NEXT: "tokLen": 1
264 // CHECK-NEXT: }
265 // CHECK-NEXT: },
266 // CHECK-NEXT: "name": "Method",
267 // CHECK-NEXT: "mangledName": "_ZN4Test1S6MethodEv",
268 // CHECK-NEXT: "type": {
269 // CHECK-NEXT: "qualType": "void ()"
270 // CHECK-NEXT: }
271 // CHECK-NEXT: }
272 // CHECK-NEXT: ]
273 // CHECK-NEXT: },
274 // CHECK-NEXT: {
275 // CHECK-NEXT: "id": "0x{{.*}}",
276 // CHECK-NEXT: "kind": "CXXMethodDecl",
277 // CHECK-NEXT: "loc": {
278 // CHECK-NEXT: "offset": {{[0-9]+}},
279 // CHECK-NEXT: "line": 13,
280 // CHECK-NEXT: "col": 9,
281 // CHECK-NEXT: "tokLen": 6
282 // CHECK-NEXT: },
283 // CHECK-NEXT: "range": {
284 // CHECK-NEXT: "begin": {
285 // CHECK-NEXT: "offset": {{[0-9]+}},
286 // CHECK-NEXT: "col": 1,
287 // CHECK-NEXT: "tokLen": 4
288 // CHECK-NEXT: },
289 // CHECK-NEXT: "end": {
290 // CHECK-NEXT: "offset": {{[0-9]+}},
291 // CHECK-NEXT: "col": 19,
292 // CHECK-NEXT: "tokLen": 1
293 // CHECK-NEXT: }
294 // CHECK-NEXT: },
295 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}",
296 // CHECK-NEXT: "previousDecl": "0x{{.*}}",
297 // CHECK-NEXT: "name": "Method",
298 // CHECK-NEXT: "mangledName": "_ZN4Test1S6MethodEv",
299 // CHECK-NEXT: "type": {
300 // CHECK-NEXT: "qualType": "void ()"
301 // CHECK-NEXT: },
302 // CHECK-NEXT: "inner": [
303 // CHECK-NEXT: {
304 // CHECK-NEXT: "id": "0x{{.*}}",
305 // CHECK-NEXT: "kind": "CompoundStmt",
306 // CHECK-NEXT: "range": {
307 // CHECK-NEXT: "begin": {
308 // CHECK-NEXT: "offset": {{[0-9]+}},
309 // CHECK-NEXT: "col": 18,
310 // CHECK-NEXT: "tokLen": 1
311 // CHECK-NEXT: },
312 // CHECK-NEXT: "end": {
313 // CHECK-NEXT: "offset": {{[0-9]+}},
314 // CHECK-NEXT: "col": 19,
315 // CHECK-NEXT: "tokLen": 1
316 // CHECK-NEXT: }
317 // CHECK-NEXT: }
318 // CHECK-NEXT: }
319 // CHECK-NEXT: ]
320 // CHECK-NEXT: }
321 // CHECK-NEXT: ]
322 // CHECK-NEXT: }