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