xref: /llvm-project/clang/test/AST/ast-dump-types-json.cpp (revision 70c1764d7a223b14b38bb394e5020e753be9c869)
1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
2 
3 namespace NS {
4 struct S {};
5 }
6 
7 struct T {
8   int I;
9   void F();
10 };
11 
12 typedef struct T TestElaboratedType1;
13 typedef NS::S TestElaboratedType2;
14 
15 #define CDECL __attribute__((cdecl))
16 typedef void (CDECL *TestMacroQualifiedType)();
17 
18 typedef void (T::* TestMemberFunctionPointerType)();
19 typedef int T::*TestMemberDataPointerType;
20 
21 typedef int TestQualTypePrinting(const char* c);
22 
23 typedef int TestUsingShadowDeclType;
24 namespace TestNamespaceWithUsingShadowType {
25 using ::TestUsingShadowDeclType;
26 }
27 
28 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
29 
30 // CHECK-NOT: {{^}}Dumping
31 // CHECK:  "kind": "TypedefDecl",
32 // CHECK-NEXT:  "loc": {
33 // CHECK-NEXT:   "offset": {{[0-9]+}},
34 // CHECK-NEXT:   "file": "{{.*}}",
35 // CHECK-NEXT:   "line": 12,
36 // CHECK-NEXT:   "col": 18,
37 // CHECK-NEXT:   "tokLen": 19
38 // CHECK-NEXT:  },
39 // CHECK-NEXT:  "range": {
40 // CHECK-NEXT:   "begin": {
41 // CHECK-NEXT:    "offset": {{[0-9]+}},
42 // CHECK-NEXT:    "col": 1,
43 // CHECK-NEXT:    "tokLen": 7
44 // CHECK-NEXT:   },
45 // CHECK-NEXT:   "end": {
46 // CHECK-NEXT:    "offset": {{[0-9]+}},
47 // CHECK-NEXT:    "col": 18,
48 // CHECK-NEXT:    "tokLen": 19
49 // CHECK-NEXT:   }
50 // CHECK-NEXT:  },
51 // CHECK-NEXT:  "name": "TestElaboratedType1",
52 // CHECK-NEXT:  "type": {
53 // CHECK-NEXT:   "desugaredQualType": "T",
54 // CHECK-NEXT:   "qualType": "struct T"
55 // CHECK-NEXT:  },
56 // CHECK-NEXT:  "inner": [
57 // CHECK-NEXT:   {
58 // CHECK-NEXT:    "id": "0x{{.*}}",
59 // CHECK-NEXT:    "kind": "ElaboratedType",
60 // CHECK-NEXT:    "type": {
61 // CHECK-NEXT:     "qualType": "struct T"
62 // CHECK-NEXT:    },
63 // CHECK-NEXT:    "inner": [
64 // CHECK-NEXT:     {
65 // CHECK-NEXT:      "id": "0x{{.*}}",
66 // CHECK-NEXT:      "kind": "RecordType",
67 // CHECK-NEXT:      "type": {
68 // CHECK-NEXT:       "qualType": "T"
69 // CHECK-NEXT:      },
70 // CHECK-NEXT:      "decl": {
71 // CHECK-NEXT:       "id": "0x{{.*}}",
72 // CHECK-NEXT:       "kind": "CXXRecordDecl",
73 // CHECK-NEXT:       "name": "T"
74 // CHECK-NEXT:      }
75 // CHECK-NEXT:     }
76 // CHECK-NEXT:    ]
77 // CHECK-NEXT:   }
78 // CHECK-NEXT:  ]
79 // CHECK-NEXT: }
80 
81 // CHECK-NOT: {{^}}Dumping
82 // CHECK:  "kind": "TypedefDecl",
83 // CHECK-NEXT:  "loc": {
84 // CHECK-NEXT:   "offset": {{[0-9]+}},
85 // CHECK-NEXT:   "file": "{{.*}}",
86 // CHECK-NEXT:   "line": 13,
87 // CHECK-NEXT:   "col": 15,
88 // CHECK-NEXT:   "tokLen": 19
89 // CHECK-NEXT:  },
90 // CHECK-NEXT:  "range": {
91 // CHECK-NEXT:   "begin": {
92 // CHECK-NEXT:    "offset": {{[0-9]+}},
93 // CHECK-NEXT:    "col": 1,
94 // CHECK-NEXT:    "tokLen": 7
95 // CHECK-NEXT:   },
96 // CHECK-NEXT:   "end": {
97 // CHECK-NEXT:    "offset": {{[0-9]+}},
98 // CHECK-NEXT:    "col": 15,
99 // CHECK-NEXT:    "tokLen": 19
100 // CHECK-NEXT:   }
101 // CHECK-NEXT:  },
102 // CHECK-NEXT:  "name": "TestElaboratedType2",
103 // CHECK-NEXT:  "type": {
104 // CHECK-NEXT:   "qualType": "NS::S"
105 // CHECK-NEXT:  },
106 // CHECK-NEXT:  "inner": [
107 // CHECK-NEXT:   {
108 // CHECK-NEXT:    "id": "0x{{.*}}",
109 // CHECK-NEXT:    "kind": "ElaboratedType",
110 // CHECK-NEXT:    "type": {
111 // CHECK-NEXT:     "qualType": "NS::S"
112 // CHECK-NEXT:    },
113 // CHECK-NEXT:    "qualifier": "NS::",
114 // CHECK-NEXT:    "inner": [
115 // CHECK-NEXT:     {
116 // CHECK-NEXT:      "id": "0x{{.*}}",
117 // CHECK-NEXT:      "kind": "RecordType",
118 // CHECK-NEXT:      "type": {
119 // CHECK-NEXT:       "qualType": "NS::S"
120 // CHECK-NEXT:      },
121 // CHECK-NEXT:      "decl": {
122 // CHECK-NEXT:       "id": "0x{{.*}}",
123 // CHECK-NEXT:       "kind": "CXXRecordDecl",
124 // CHECK-NEXT:       "name": "S"
125 // CHECK-NEXT:      }
126 // CHECK-NEXT:     }
127 // CHECK-NEXT:    ]
128 // CHECK-NEXT:   }
129 // CHECK-NEXT:  ]
130 // CHECK-NEXT: }
131 
132 // CHECK-NOT: {{^}}Dumping
133 // CHECK:  "kind": "TypedefDecl",
134 // CHECK-NEXT:  "loc": {
135 // CHECK-NEXT:   "offset": {{[0-9]+}},
136 // CHECK-NEXT:   "file": "{{.*}}",
137 // CHECK-NEXT:   "line": 16,
138 // CHECK-NEXT:   "col": 22,
139 // CHECK-NEXT:   "tokLen": 22
140 // CHECK-NEXT:  },
141 // CHECK-NEXT:  "range": {
142 // CHECK-NEXT:   "begin": {
143 // CHECK-NEXT:    "offset": {{[0-9]+}},
144 // CHECK-NEXT:    "col": 1,
145 // CHECK-NEXT:    "tokLen": 7
146 // CHECK-NEXT:   },
147 // CHECK-NEXT:   "end": {
148 // CHECK-NEXT:    "offset": {{[0-9]+}},
149 // CHECK-NEXT:    "col": 22,
150 // CHECK-NEXT:    "tokLen": 22
151 // CHECK-NEXT:   }
152 // CHECK-NEXT:  },
153 // CHECK-NEXT:  "name": "TestMacroQualifiedType",
154 // CHECK-NEXT:  "type": {
155 // CHECK-NEXT:   "qualType": "CDECL void (*)()"
156 // CHECK-NEXT:  },
157 // CHECK-NEXT:  "inner": [
158 // CHECK-NEXT:   {
159 // CHECK-NEXT:    "id": "0x{{.*}}",
160 // CHECK-NEXT:    "kind": "PointerType",
161 // CHECK-NEXT:    "type": {
162 // CHECK-NEXT:     "qualType": "CDECL void (*)()"
163 // CHECK-NEXT:    },
164 // CHECK-NEXT:    "inner": [
165 // CHECK-NEXT:     {
166 // CHECK-NEXT:      "id": "0x{{.*}}",
167 // CHECK-NEXT:      "kind": "MacroQualifiedType",
168 // CHECK-NEXT:      "type": {
169 // CHECK-NEXT:       "qualType": "CDECL void ()"
170 // CHECK-NEXT:      },
171 // CHECK-NEXT:      "macroName": "CDECL",
172 // CHECK-NEXT:      "inner": [
173 // CHECK-NEXT:       {
174 // CHECK-NEXT:        "id": "0x{{.*}}",
175 // CHECK-NEXT:        "kind": "AttributedType",
176 // CHECK-NEXT:        "type": {
177 // CHECK-NEXT:         "qualType": "void () __attribute__((cdecl))"
178 // CHECK-NEXT:        },
179 // CHECK-NEXT:        "inner": [
180 // CHECK-NEXT:         {
181 // CHECK-NEXT:          "id": "0x{{.*}}",
182 // CHECK-NEXT:          "kind": "ParenType",
183 // CHECK-NEXT:          "type": {
184 // CHECK-NEXT:           "qualType": "void ()"
185 // CHECK-NEXT:          },
186 // CHECK-NEXT:          "inner": [
187 // CHECK-NEXT:           {
188 // CHECK-NEXT:            "id": "0x{{.*}}",
189 // CHECK-NEXT:            "kind": "FunctionProtoType",
190 // CHECK-NEXT:            "type": {
191 // CHECK-NEXT:             "qualType": "void ()"
192 // CHECK-NEXT:            },
193 // CHECK-NEXT:            "cc": "cdecl",
194 // CHECK-NEXT:            "inner": [
195 // CHECK-NEXT:             {
196 // CHECK-NEXT:              "id": "0x{{.*}}",
197 // CHECK-NEXT:              "kind": "BuiltinType",
198 // CHECK-NEXT:              "type": {
199 // CHECK-NEXT:               "qualType": "void"
200 // CHECK-NEXT:              }
201 // CHECK-NEXT:             }
202 // CHECK-NEXT:            ]
203 // CHECK-NEXT:           }
204 // CHECK-NEXT:          ]
205 // CHECK-NEXT:         }
206 // CHECK-NEXT:        ]
207 // CHECK-NEXT:       }
208 // CHECK-NEXT:      ]
209 // CHECK-NEXT:     }
210 // CHECK-NEXT:    ]
211 // CHECK-NEXT:   }
212 // CHECK-NEXT:  ]
213 // CHECK-NEXT: }
214 
215 // CHECK-NOT: {{^}}Dumping
216 // CHECK:  "kind": "TypedefDecl",
217 // CHECK-NEXT:  "loc": {
218 // CHECK-NEXT:   "offset": {{[0-9]+}},
219 // CHECK-NEXT:   "file": "{{.*}}",
220 // CHECK-NEXT:   "line": 18,
221 // CHECK-NEXT:   "col": 20,
222 // CHECK-NEXT:   "tokLen": 29
223 // CHECK-NEXT:  },
224 // CHECK-NEXT:  "range": {
225 // CHECK-NEXT:   "begin": {
226 // CHECK-NEXT:    "offset": {{[0-9]+}},
227 // CHECK-NEXT:    "col": 1,
228 // CHECK-NEXT:    "tokLen": 7
229 // CHECK-NEXT:   },
230 // CHECK-NEXT:   "end": {
231 // CHECK-NEXT:    "offset": {{[0-9]+}},
232 // CHECK-NEXT:    "col": 51,
233 // CHECK-NEXT:    "tokLen": 1
234 // CHECK-NEXT:   }
235 // CHECK-NEXT:  },
236 // CHECK-NEXT:  "name": "TestMemberFunctionPointerType",
237 // CHECK-NEXT:  "type": {
238 // CHECK-NEXT:   "qualType": "void (T::*)()"
239 // CHECK-NEXT:  },
240 // CHECK-NEXT:  "inner": [
241 // CHECK-NEXT:   {
242 // CHECK-NEXT:    "id": "0x{{.*}}",
243 // CHECK-NEXT:    "kind": "MemberPointerType",
244 // CHECK-NEXT:    "type": {
245 // CHECK-NEXT:     "qualType": "void (T::*)()"
246 // CHECK-NEXT:    },
247 // CHECK-NEXT:    "isFunction": true,
248 // CHECK-NEXT:    "inner": [
249 // CHECK-NEXT:     {
250 // CHECK-NEXT:      "id": "0x{{.*}}",
251 // CHECK-NEXT:      "kind": "ElaboratedType",
252 // CHECK-NEXT:      "type": {
253 // CHECK-NEXT:       "qualType": "T"
254 // CHECK-NEXT:      },
255 // CHECK-NEXT:      "inner": [
256 // CHECK-NEXT:       {
257 // CHECK-NEXT:        "id": "0x{{.*}}",
258 // CHECK-NEXT:        "kind": "RecordType",
259 // CHECK-NEXT:        "type": {
260 // CHECK-NEXT:         "qualType": "T"
261 // CHECK-NEXT:        },
262 // CHECK-NEXT:        "decl": {
263 // CHECK-NEXT:         "id": "0x{{.*}}",
264 // CHECK-NEXT:         "kind": "CXXRecordDecl",
265 // CHECK-NEXT:         "name": "T"
266 // CHECK-NEXT:        }
267 // CHECK-NEXT:       }
268 // CHECK-NEXT:      ]
269 // CHECK-NEXT:     },
270 // CHECK-NEXT:     {
271 // CHECK-NEXT:      "id": "0x{{.*}}",
272 // CHECK-NEXT:      "kind": "ParenType",
273 // CHECK-NEXT:      "type": {
274 // CHECK-NEXT:       "qualType": "void ()"
275 // CHECK-NEXT:      },
276 // CHECK-NEXT:      "inner": [
277 // CHECK-NEXT:       {
278 // CHECK-NEXT:        "id": "0x{{.*}}",
279 // CHECK-NEXT:        "kind": "FunctionProtoType",
280 // CHECK-NEXT:        "type": {
281 // CHECK-NEXT:         "qualType": "void ()"
282 // CHECK-NEXT:        },
283 // CHECK-NEXT:        "cc": "cdecl",
284 // CHECK-NEXT:        "inner": [
285 // CHECK-NEXT:         {
286 // CHECK-NEXT:          "id": "0x{{.*}}",
287 // CHECK-NEXT:          "kind": "BuiltinType",
288 // CHECK-NEXT:          "type": {
289 // CHECK-NEXT:           "qualType": "void"
290 // CHECK-NEXT:          }
291 // CHECK-NEXT:         }
292 // CHECK-NEXT:        ]
293 // CHECK-NEXT:       }
294 // CHECK-NEXT:      ]
295 // CHECK-NEXT:     }
296 // CHECK-NEXT:    ]
297 // CHECK-NEXT:   }
298 // CHECK-NEXT:  ]
299 // CHECK-NEXT: }
300 
301 // CHECK-NOT: {{^}}Dumping
302 // CHECK:  "kind": "TypedefDecl",
303 // CHECK-NEXT:  "loc": {
304 // CHECK-NEXT:   "offset": {{[0-9]+}},
305 // CHECK-NEXT:   "file": "{{.*}}",
306 // CHECK-NEXT:   "line": 19,
307 // CHECK-NEXT:   "col": 17,
308 // CHECK-NEXT:   "tokLen": 25
309 // CHECK-NEXT:  },
310 // CHECK-NEXT:  "range": {
311 // CHECK-NEXT:   "begin": {
312 // CHECK-NEXT:    "offset": {{[0-9]+}},
313 // CHECK-NEXT:    "col": 1,
314 // CHECK-NEXT:    "tokLen": 7
315 // CHECK-NEXT:   },
316 // CHECK-NEXT:   "end": {
317 // CHECK-NEXT:    "offset": {{[0-9]+}},
318 // CHECK-NEXT:    "col": 17,
319 // CHECK-NEXT:    "tokLen": 25
320 // CHECK-NEXT:   }
321 // CHECK-NEXT:  },
322 // CHECK-NEXT:  "name": "TestMemberDataPointerType",
323 // CHECK-NEXT:  "type": {
324 // CHECK-NEXT:   "qualType": "int T::*"
325 // CHECK-NEXT:  },
326 // CHECK-NEXT:  "inner": [
327 // CHECK-NEXT:   {
328 // CHECK-NEXT:    "id": "0x{{.*}}",
329 // CHECK-NEXT:    "kind": "MemberPointerType",
330 // CHECK-NEXT:    "type": {
331 // CHECK-NEXT:     "qualType": "int T::*"
332 // CHECK-NEXT:    },
333 // CHECK-NEXT:    "isData": true,
334 // CHECK-NEXT:    "inner": [
335 // CHECK-NEXT:     {
336 // CHECK-NEXT:      "id": "0x{{.*}}",
337 // CHECK-NEXT:      "kind": "ElaboratedType",
338 // CHECK-NEXT:      "type": {
339 // CHECK-NEXT:       "qualType": "T"
340 // CHECK-NEXT:      },
341 // CHECK-NEXT:      "inner": [
342 // CHECK-NEXT:       {
343 // CHECK-NEXT:        "id": "0x{{.*}}",
344 // CHECK-NEXT:        "kind": "RecordType",
345 // CHECK-NEXT:        "type": {
346 // CHECK-NEXT:         "qualType": "T"
347 // CHECK-NEXT:        },
348 // CHECK-NEXT:        "decl": {
349 // CHECK-NEXT:         "id": "0x{{.*}}",
350 // CHECK-NEXT:         "kind": "CXXRecordDecl",
351 // CHECK-NEXT:         "name": "T"
352 // CHECK-NEXT:        }
353 // CHECK-NEXT:       }
354 // CHECK-NEXT:      ]
355 // CHECK-NEXT:     },
356 // CHECK-NEXT:     {
357 // CHECK-NEXT:      "id": "0x{{.*}}",
358 // CHECK-NEXT:      "kind": "BuiltinType",
359 // CHECK-NEXT:      "type": {
360 // CHECK-NEXT:       "qualType": "int"
361 // CHECK-NEXT:      }
362 // CHECK-NEXT:     }
363 // CHECK-NEXT:    ]
364 // CHECK-NEXT:   }
365 // CHECK-NEXT:  ]
366 // CHECK-NEXT: }
367 
368 // CHECK-NOT: {{^}}Dumping
369 // CHECK:  "kind": "TypedefDecl",
370 // CHECK-NEXT:  "loc": {
371 // CHECK-NEXT:   "offset": {{[0-9]+}},
372 // CHECK-NEXT:   "file": "{{.*}}",
373 // CHECK-NEXT:   "line": 21,
374 // CHECK-NEXT:   "col": 13,
375 // CHECK-NEXT:   "tokLen": 20
376 // CHECK-NEXT:  },
377 // CHECK-NEXT:  "range": {
378 // CHECK-NEXT:   "begin": {
379 // CHECK-NEXT:    "offset": {{[0-9]+}},
380 // CHECK-NEXT:    "col": 1,
381 // CHECK-NEXT:    "tokLen": 7
382 // CHECK-NEXT:   },
383 // CHECK-NEXT:   "end": {
384 // CHECK-NEXT:    "offset": {{[0-9]+}},
385 // CHECK-NEXT:    "col": 47,
386 // CHECK-NEXT:    "tokLen": 1
387 // CHECK-NEXT:   }
388 // CHECK-NEXT:  },
389 // CHECK-NEXT:  "name": "TestQualTypePrinting",
390 // CHECK-NEXT:  "type": {
391 // CHECK-NEXT:   "qualType": "int (const char *)"
392 // CHECK-NEXT:  },
393 // CHECK-NEXT:  "inner": [
394 // CHECK-NEXT:   {
395 // CHECK-NEXT:    "id": "0x{{.*}}",
396 // CHECK-NEXT:    "kind": "FunctionProtoType",
397 // CHECK-NEXT:    "type": {
398 // CHECK-NEXT:     "qualType": "int (const char *)"
399 // CHECK-NEXT:    },
400 // CHECK-NEXT:    "cc": "cdecl",
401 // CHECK-NEXT:    "inner": [
402 // CHECK-NEXT:     {
403 // CHECK-NEXT:      "id": "0x{{.*}}",
404 // CHECK-NEXT:      "kind": "BuiltinType",
405 // CHECK-NEXT:      "type": {
406 // CHECK-NEXT:       "qualType": "int"
407 // CHECK-NEXT:      }
408 // CHECK-NEXT:     },
409 // CHECK-NEXT:     {
410 // CHECK-NEXT:      "id": "0x{{.*}}",
411 // CHECK-NEXT:      "kind": "PointerType",
412 // CHECK-NEXT:      "type": {
413 // CHECK-NEXT:       "qualType": "const char *"
414 // CHECK-NEXT:      },
415 // CHECK-NEXT:      "inner": [
416 // CHECK-NEXT:       {
417 // CHECK-NEXT:        "id": "0x{{.*}}",
418 // CHECK-NEXT:        "kind": "QualType",
419 // CHECK-NEXT:        "type": {
420 // CHECK-NEXT:         "qualType": "const char"
421 // CHECK-NEXT:        },
422 // CHECK-NEXT:        "qualifiers": "const",
423 // CHECK-NEXT:        "inner": [
424 // CHECK-NEXT:         {
425 // CHECK-NEXT:          "id": "0x{{.*}}",
426 // CHECK-NEXT:          "kind": "BuiltinType",
427 // CHECK-NEXT:          "type": {
428 // CHECK-NEXT:           "qualType": "char"
429 // CHECK-NEXT:          }
430 // CHECK-NEXT:         }
431 // CHECK-NEXT:        ]
432 // CHECK-NEXT:       }
433 // CHECK-NEXT:      ]
434 // CHECK-NEXT:     }
435 // CHECK-NEXT:    ]
436 // CHECK-NEXT:   }
437 // CHECK-NEXT:  ]
438 // CHECK-NEXT: }
439 
440 // CHECK-NOT: {{^}}Dumping
441 // CHECK:  "kind": "TypedefDecl",
442 // CHECK-NEXT:  "loc": {
443 // CHECK-NEXT:   "offset": {{[0-9]+}},
444 // CHECK-NEXT:   "file": "{{.*}}",
445 // CHECK-NEXT:   "line": 23,
446 // CHECK-NEXT:   "col": 13,
447 // CHECK-NEXT:   "tokLen": 23
448 // CHECK-NEXT:  },
449 // CHECK-NEXT:  "range": {
450 // CHECK-NEXT:   "begin": {
451 // CHECK-NEXT:    "offset": {{[0-9]+}},
452 // CHECK-NEXT:    "col": 1,
453 // CHECK-NEXT:    "tokLen": 7
454 // CHECK-NEXT:   },
455 // CHECK-NEXT:   "end": {
456 // CHECK-NEXT:    "offset": {{[0-9]+}},
457 // CHECK-NEXT:    "col": 13,
458 // CHECK-NEXT:    "tokLen": 23
459 // CHECK-NEXT:   }
460 // CHECK-NEXT:  },
461 // CHECK-NEXT:  "name": "TestUsingShadowDeclType",
462 // CHECK-NEXT:  "type": {
463 // CHECK-NEXT:   "qualType": "int"
464 // CHECK-NEXT:  },
465 // CHECK-NEXT:  "inner": [
466 // CHECK-NEXT:   {
467 // CHECK-NEXT:    "id": "0x{{.*}}",
468 // CHECK-NEXT:    "kind": "BuiltinType",
469 // CHECK-NEXT:    "type": {
470 // CHECK-NEXT:     "qualType": "int"
471 // CHECK-NEXT:    }
472 // CHECK-NEXT:   }
473 // CHECK-NEXT:  ]
474 // CHECK-NEXT: }
475 
476 // CHECK-NOT: {{^}}Dumping
477 // CHECK:  "kind": "NamespaceDecl",
478 // CHECK-NEXT:  "loc": {
479 // CHECK-NEXT:   "offset": {{[0-9]+}},
480 // CHECK-NEXT:   "file": "{{.*}}",
481 // CHECK-NEXT:   "line": 24,
482 // CHECK-NEXT:   "col": 11,
483 // CHECK-NEXT:   "tokLen": 32
484 // CHECK-NEXT:  },
485 // CHECK-NEXT:  "range": {
486 // CHECK-NEXT:   "begin": {
487 // CHECK-NEXT:    "offset": {{[0-9]+}},
488 // CHECK-NEXT:    "col": 1,
489 // CHECK-NEXT:    "tokLen": 9
490 // CHECK-NEXT:   },
491 // CHECK-NEXT:   "end": {
492 // CHECK-NEXT:    "offset": {{[0-9]+}},
493 // CHECK-NEXT:    "line": 26,
494 // CHECK-NEXT:    "col": 1,
495 // CHECK-NEXT:    "tokLen": 1
496 // CHECK-NEXT:   }
497 // CHECK-NEXT:  },
498 // CHECK-NEXT:  "name": "TestNamespaceWithUsingShadowType",
499 // CHECK-NEXT:  "inner": [
500 // CHECK-NEXT:   {
501 // CHECK-NEXT:    "id": "0x{{.*}}",
502 // CHECK-NEXT:    "kind": "UsingDecl",
503 // CHECK-NEXT:    "loc": {
504 // CHECK-NEXT:     "offset": {{[0-9]+}},
505 // CHECK-NEXT:     "line": 25,
506 // CHECK-NEXT:     "col": 9,
507 // CHECK-NEXT:     "tokLen": 23
508 // CHECK-NEXT:    },
509 // CHECK-NEXT:    "range": {
510 // CHECK-NEXT:     "begin": {
511 // CHECK-NEXT:      "offset": {{[0-9]+}},
512 // CHECK-NEXT:      "col": 1,
513 // CHECK-NEXT:      "tokLen": 5
514 // CHECK-NEXT:     },
515 // CHECK-NEXT:     "end": {
516 // CHECK-NEXT:      "offset": {{[0-9]+}},
517 // CHECK-NEXT:      "col": 9,
518 // CHECK-NEXT:      "tokLen": 23
519 // CHECK-NEXT:     }
520 // CHECK-NEXT:    },
521 // CHECK-NEXT:    "name": "::TestUsingShadowDeclType"
522 // CHECK-NEXT:   },
523 // CHECK-NEXT:   {
524 // CHECK-NEXT:    "id": "0x{{.*}}",
525 // CHECK-NEXT:    "kind": "UsingShadowDecl",
526 // CHECK-NEXT:    "loc": {
527 // CHECK-NEXT:     "offset": {{[0-9]+}},
528 // CHECK-NEXT:     "col": 9,
529 // CHECK-NEXT:     "tokLen": 23
530 // CHECK-NEXT:    },
531 // CHECK-NEXT:    "range": {
532 // CHECK-NEXT:     "begin": {
533 // CHECK-NEXT:      "offset": {{[0-9]+}},
534 // CHECK-NEXT:      "col": 9,
535 // CHECK-NEXT:      "tokLen": 23
536 // CHECK-NEXT:     },
537 // CHECK-NEXT:     "end": {
538 // CHECK-NEXT:      "offset": {{[0-9]+}},
539 // CHECK-NEXT:      "col": 9,
540 // CHECK-NEXT:      "tokLen": 23
541 // CHECK-NEXT:     }
542 // CHECK-NEXT:    },
543 // CHECK-NEXT:    "isImplicit": true,
544 // CHECK-NEXT:    "target": {
545 // CHECK-NEXT:     "id": "0x{{.*}}",
546 // CHECK-NEXT:     "kind": "TypedefDecl",
547 // CHECK-NEXT:     "name": "TestUsingShadowDeclType"
548 // CHECK-NEXT:    },
549 // CHECK-NEXT:    "inner": [
550 // CHECK-NEXT:     {
551 // CHECK-NEXT:      "id": "0x0"
552 // CHECK-NEXT:     }
553 // CHECK-NEXT:    ]
554 // CHECK-NEXT:   }
555 // CHECK-NEXT:  ]
556 // CHECK-NEXT: }
557