xref: /llvm-project/clang/test/AST/ast-dump-funcs-json.cpp (revision 60294f9d3547e270f7adf9e5972138edbb625966)
1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
2 
3 struct S {
4   void Test1();
5   void Test2() const;
6   void Test3() volatile;
7   void Test4() &;
8   void Test5() &&;
9   virtual void Test6(float, int = 12);
10   virtual void Test7() = 0;
11 };
12 
13 struct T : S { // T is not referenced, but S is
14   void Test6(float, int = 100) override;
15 };
16 
17 struct U {
18   void Test1();
19 };
20 void U::Test1() {} // parent
21 
22 void Test1();
23 void Test2(void);
24 void Test3(int a, int b);
25 void Test4(int a, int b = 12);
26 constexpr void Test5(void);
27 static void Test6(void);
28 extern void Test7(void);
29 inline void Test8(void);
30 void Test9(void) noexcept;
31 void Test10(void) noexcept(false);
32 void Test11(void) noexcept(1);
33 
34 template <typename T>
35 T Test12(T&);
36 
37 void Test13(int) {}
38 void Test14(int, ...) {}
39 
40 int main() {
41   Test1(); // Causes this to be marked 'used'
42 }
43 
44 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
45 
46 
47 // CHECK:  "kind": "CXXMethodDecl",
48 // CHECK-NEXT:  "loc": {
49 // CHECK-NEXT:   "col": 8,
50 // CHECK-NEXT:   "file": "{{.*}}",
51 // CHECK-NEXT:   "line": 4
52 // CHECK-NEXT:  },
53 // CHECK-NEXT:  "range": {
54 // CHECK-NEXT:   "begin": {
55 // CHECK-NEXT:    "col": 3,
56 // CHECK-NEXT:    "file": "{{.*}}",
57 // CHECK-NEXT:    "line": 4
58 // CHECK-NEXT:   },
59 // CHECK-NEXT:   "end": {
60 // CHECK-NEXT:    "col": 14,
61 // CHECK-NEXT:    "file": "{{.*}}",
62 // CHECK-NEXT:    "line": 4
63 // CHECK-NEXT:   }
64 // CHECK-NEXT:  },
65 // CHECK-NEXT:  "name": "Test1",
66 // CHECK-NEXT:  "type": {
67 // CHECK-NEXT:   "qualType": "void ()"
68 // CHECK-NEXT:  }
69 // CHECK-NEXT: }
70 
71 
72 // CHECK:  "kind": "CXXMethodDecl",
73 // CHECK-NEXT:  "loc": {
74 // CHECK-NEXT:   "col": 8,
75 // CHECK-NEXT:   "file": "{{.*}}",
76 // CHECK-NEXT:   "line": 5
77 // CHECK-NEXT:  },
78 // CHECK-NEXT:  "range": {
79 // CHECK-NEXT:   "begin": {
80 // CHECK-NEXT:    "col": 3,
81 // CHECK-NEXT:    "file": "{{.*}}",
82 // CHECK-NEXT:    "line": 5
83 // CHECK-NEXT:   },
84 // CHECK-NEXT:   "end": {
85 // CHECK-NEXT:    "col": 16,
86 // CHECK-NEXT:    "file": "{{.*}}",
87 // CHECK-NEXT:    "line": 5
88 // CHECK-NEXT:   }
89 // CHECK-NEXT:  },
90 // CHECK-NEXT:  "name": "Test2",
91 // CHECK-NEXT:  "type": {
92 // CHECK-NEXT:   "qualType": "void () const"
93 // CHECK-NEXT:  }
94 // CHECK-NEXT: }
95 
96 
97 // CHECK:  "kind": "CXXMethodDecl",
98 // CHECK-NEXT:  "loc": {
99 // CHECK-NEXT:   "col": 8,
100 // CHECK-NEXT:   "file": "{{.*}}",
101 // CHECK-NEXT:   "line": 6
102 // CHECK-NEXT:  },
103 // CHECK-NEXT:  "range": {
104 // CHECK-NEXT:   "begin": {
105 // CHECK-NEXT:    "col": 3,
106 // CHECK-NEXT:    "file": "{{.*}}",
107 // CHECK-NEXT:    "line": 6
108 // CHECK-NEXT:   },
109 // CHECK-NEXT:   "end": {
110 // CHECK-NEXT:    "col": 16,
111 // CHECK-NEXT:    "file": "{{.*}}",
112 // CHECK-NEXT:    "line": 6
113 // CHECK-NEXT:   }
114 // CHECK-NEXT:  },
115 // CHECK-NEXT:  "name": "Test3",
116 // CHECK-NEXT:  "type": {
117 // CHECK-NEXT:   "qualType": "void () volatile"
118 // CHECK-NEXT:  }
119 // CHECK-NEXT: }
120 
121 
122 // CHECK:  "kind": "CXXMethodDecl",
123 // CHECK-NEXT:  "loc": {
124 // CHECK-NEXT:   "col": 8,
125 // CHECK-NEXT:   "file": "{{.*}}",
126 // CHECK-NEXT:   "line": 7
127 // CHECK-NEXT:  },
128 // CHECK-NEXT:  "range": {
129 // CHECK-NEXT:   "begin": {
130 // CHECK-NEXT:    "col": 3,
131 // CHECK-NEXT:    "file": "{{.*}}",
132 // CHECK-NEXT:    "line": 7
133 // CHECK-NEXT:   },
134 // CHECK-NEXT:   "end": {
135 // CHECK-NEXT:    "col": 16,
136 // CHECK-NEXT:    "file": "{{.*}}",
137 // CHECK-NEXT:    "line": 7
138 // CHECK-NEXT:   }
139 // CHECK-NEXT:  },
140 // CHECK-NEXT:  "name": "Test4",
141 // CHECK-NEXT:  "type": {
142 // CHECK-NEXT:   "qualType": "void () &"
143 // CHECK-NEXT:  }
144 // CHECK-NEXT: }
145 
146 
147 // CHECK:  "kind": "CXXMethodDecl",
148 // CHECK-NEXT:  "loc": {
149 // CHECK-NEXT:   "col": 8,
150 // CHECK-NEXT:   "file": "{{.*}}",
151 // CHECK-NEXT:   "line": 8
152 // CHECK-NEXT:  },
153 // CHECK-NEXT:  "range": {
154 // CHECK-NEXT:   "begin": {
155 // CHECK-NEXT:    "col": 3,
156 // CHECK-NEXT:    "file": "{{.*}}",
157 // CHECK-NEXT:    "line": 8
158 // CHECK-NEXT:   },
159 // CHECK-NEXT:   "end": {
160 // CHECK-NEXT:    "col": 16,
161 // CHECK-NEXT:    "file": "{{.*}}",
162 // CHECK-NEXT:    "line": 8
163 // CHECK-NEXT:   }
164 // CHECK-NEXT:  },
165 // CHECK-NEXT:  "name": "Test5",
166 // CHECK-NEXT:  "type": {
167 // CHECK-NEXT:   "qualType": "void () &&"
168 // CHECK-NEXT:  }
169 // CHECK-NEXT: }
170 
171 
172 // CHECK:  "kind": "CXXMethodDecl",
173 // CHECK-NEXT:  "loc": {
174 // CHECK-NEXT:   "col": 16,
175 // CHECK-NEXT:   "file": "{{.*}}",
176 // CHECK-NEXT:   "line": 9
177 // CHECK-NEXT:  },
178 // CHECK-NEXT:  "range": {
179 // CHECK-NEXT:   "begin": {
180 // CHECK-NEXT:    "col": 3,
181 // CHECK-NEXT:    "file": "{{.*}}",
182 // CHECK-NEXT:    "line": 9
183 // CHECK-NEXT:   },
184 // CHECK-NEXT:   "end": {
185 // CHECK-NEXT:    "col": 37,
186 // CHECK-NEXT:    "file": "{{.*}}",
187 // CHECK-NEXT:    "line": 9
188 // CHECK-NEXT:   }
189 // CHECK-NEXT:  },
190 // CHECK-NEXT:  "name": "Test6",
191 // CHECK-NEXT:  "type": {
192 // CHECK-NEXT:   "qualType": "void (float, int)"
193 // CHECK-NEXT:  },
194 // CHECK-NEXT:  "virtual": true,
195 // CHECK-NEXT:  "inner": [
196 // CHECK-NEXT:   {
197 // CHECK-NEXT:    "id": "0x{{.*}}",
198 // CHECK-NEXT:    "kind": "ParmVarDecl",
199 // CHECK-NEXT:    "loc": {
200 // CHECK-NEXT:     "col": 27,
201 // CHECK-NEXT:     "file": "{{.*}}",
202 // CHECK-NEXT:     "line": 9
203 // CHECK-NEXT:    },
204 // CHECK-NEXT:    "range": {
205 // CHECK-NEXT:     "begin": {
206 // CHECK-NEXT:      "col": 22,
207 // CHECK-NEXT:      "file": "{{.*}}",
208 // CHECK-NEXT:      "line": 9
209 // CHECK-NEXT:     },
210 // CHECK-NEXT:     "end": {
211 // CHECK-NEXT:      "col": 22,
212 // CHECK-NEXT:      "file": "{{.*}}",
213 // CHECK-NEXT:      "line": 9
214 // CHECK-NEXT:     }
215 // CHECK-NEXT:    },
216 // CHECK-NEXT:    "type": {
217 // CHECK-NEXT:     "qualType": "float"
218 // CHECK-NEXT:    }
219 // CHECK-NEXT:   },
220 // CHECK-NEXT:   {
221 // CHECK-NEXT:    "id": "0x{{.*}}",
222 // CHECK-NEXT:    "kind": "ParmVarDecl",
223 // CHECK-NEXT:    "loc": {
224 // CHECK-NEXT:     "col": 33,
225 // CHECK-NEXT:     "file": "{{.*}}",
226 // CHECK-NEXT:     "line": 9
227 // CHECK-NEXT:    },
228 // CHECK-NEXT:    "range": {
229 // CHECK-NEXT:     "begin": {
230 // CHECK-NEXT:      "col": 29,
231 // CHECK-NEXT:      "file": "{{.*}}",
232 // CHECK-NEXT:      "line": 9
233 // CHECK-NEXT:     },
234 // CHECK-NEXT:     "end": {
235 // CHECK-NEXT:      "col": 35,
236 // CHECK-NEXT:      "file": "{{.*}}",
237 // CHECK-NEXT:      "line": 9
238 // CHECK-NEXT:     }
239 // CHECK-NEXT:    },
240 // CHECK-NEXT:    "type": {
241 // CHECK-NEXT:     "qualType": "int"
242 // CHECK-NEXT:    },
243 // CHECK-NEXT:    "init": "c",
244 // CHECK-NEXT:    "inner": [
245 // CHECK-NEXT:     {
246 // CHECK-NEXT:      "id": "0x{{.*}}",
247 // CHECK-NEXT:      "kind": "IntegerLiteral",
248 // CHECK-NEXT:      "range": {
249 // CHECK-NEXT:       "begin": {
250 // CHECK-NEXT:        "col": 35,
251 // CHECK-NEXT:        "file": "{{.*}}",
252 // CHECK-NEXT:        "line": 9
253 // CHECK-NEXT:       },
254 // CHECK-NEXT:       "end": {
255 // CHECK-NEXT:        "col": 35,
256 // CHECK-NEXT:        "file": "{{.*}}",
257 // CHECK-NEXT:        "line": 9
258 // CHECK-NEXT:       }
259 // CHECK-NEXT:      },
260 // CHECK-NEXT:      "type": {
261 // CHECK-NEXT:       "qualType": "int"
262 // CHECK-NEXT:      },
263 // CHECK-NEXT:      "valueCategory": "rvalue",
264 // CHECK-NEXT:      "value": "12"
265 // CHECK-NEXT:     }
266 // CHECK-NEXT:    ]
267 // CHECK-NEXT:   }
268 // CHECK-NEXT:  ]
269 // CHECK-NEXT: }
270 
271 
272 // CHECK:  "kind": "CXXMethodDecl",
273 // CHECK-NEXT:  "loc": {
274 // CHECK-NEXT:   "col": 16,
275 // CHECK-NEXT:   "file": "{{.*}}",
276 // CHECK-NEXT:   "line": 10
277 // CHECK-NEXT:  },
278 // CHECK-NEXT:  "range": {
279 // CHECK-NEXT:   "begin": {
280 // CHECK-NEXT:    "col": 3,
281 // CHECK-NEXT:    "file": "{{.*}}",
282 // CHECK-NEXT:    "line": 10
283 // CHECK-NEXT:   },
284 // CHECK-NEXT:   "end": {
285 // CHECK-NEXT:    "col": 26,
286 // CHECK-NEXT:    "file": "{{.*}}",
287 // CHECK-NEXT:    "line": 10
288 // CHECK-NEXT:   }
289 // CHECK-NEXT:  },
290 // CHECK-NEXT:  "name": "Test7",
291 // CHECK-NEXT:  "type": {
292 // CHECK-NEXT:   "qualType": "void ()"
293 // CHECK-NEXT:  },
294 // CHECK-NEXT:  "virtual": true,
295 // CHECK-NEXT:  "pure": true
296 // CHECK-NEXT: }
297 
298 
299 // CHECK:  "kind": "CXXMethodDecl",
300 // CHECK-NEXT:  "loc": {
301 // CHECK-NEXT:   "col": 8,
302 // CHECK-NEXT:   "file": "{{.*}}",
303 // CHECK-NEXT:   "line": 14
304 // CHECK-NEXT:  },
305 // CHECK-NEXT:  "range": {
306 // CHECK-NEXT:   "begin": {
307 // CHECK-NEXT:    "col": 3,
308 // CHECK-NEXT:    "file": "{{.*}}",
309 // CHECK-NEXT:    "line": 14
310 // CHECK-NEXT:   },
311 // CHECK-NEXT:   "end": {
312 // CHECK-NEXT:    "col": 32,
313 // CHECK-NEXT:    "file": "{{.*}}",
314 // CHECK-NEXT:    "line": 14
315 // CHECK-NEXT:   }
316 // CHECK-NEXT:  },
317 // CHECK-NEXT:  "name": "Test6",
318 // CHECK-NEXT:  "type": {
319 // CHECK-NEXT:   "qualType": "void (float, int)"
320 // CHECK-NEXT:  },
321 // CHECK-NEXT:  "inner": [
322 // CHECK-NEXT:   {
323 // CHECK-NEXT:    "id": "0x{{.*}}",
324 // CHECK-NEXT:    "kind": "ParmVarDecl",
325 // CHECK-NEXT:    "loc": {
326 // CHECK-NEXT:     "col": 19,
327 // CHECK-NEXT:     "file": "{{.*}}",
328 // CHECK-NEXT:     "line": 14
329 // CHECK-NEXT:    },
330 // CHECK-NEXT:    "range": {
331 // CHECK-NEXT:     "begin": {
332 // CHECK-NEXT:      "col": 14,
333 // CHECK-NEXT:      "file": "{{.*}}",
334 // CHECK-NEXT:      "line": 14
335 // CHECK-NEXT:     },
336 // CHECK-NEXT:     "end": {
337 // CHECK-NEXT:      "col": 14,
338 // CHECK-NEXT:      "file": "{{.*}}",
339 // CHECK-NEXT:      "line": 14
340 // CHECK-NEXT:     }
341 // CHECK-NEXT:    },
342 // CHECK-NEXT:    "type": {
343 // CHECK-NEXT:     "qualType": "float"
344 // CHECK-NEXT:    }
345 // CHECK-NEXT:   },
346 // CHECK-NEXT:   {
347 // CHECK-NEXT:    "id": "0x{{.*}}",
348 // CHECK-NEXT:    "kind": "ParmVarDecl",
349 // CHECK-NEXT:    "loc": {
350 // CHECK-NEXT:     "col": 25,
351 // CHECK-NEXT:     "file": "{{.*}}",
352 // CHECK-NEXT:     "line": 14
353 // CHECK-NEXT:    },
354 // CHECK-NEXT:    "range": {
355 // CHECK-NEXT:     "begin": {
356 // CHECK-NEXT:      "col": 21,
357 // CHECK-NEXT:      "file": "{{.*}}",
358 // CHECK-NEXT:      "line": 14
359 // CHECK-NEXT:     },
360 // CHECK-NEXT:     "end": {
361 // CHECK-NEXT:      "col": 27,
362 // CHECK-NEXT:      "file": "{{.*}}",
363 // CHECK-NEXT:      "line": 14
364 // CHECK-NEXT:     }
365 // CHECK-NEXT:    },
366 // CHECK-NEXT:    "type": {
367 // CHECK-NEXT:     "qualType": "int"
368 // CHECK-NEXT:    },
369 // CHECK-NEXT:    "init": "c",
370 // CHECK-NEXT:    "inner": [
371 // CHECK-NEXT:     {
372 // CHECK-NEXT:      "id": "0x{{.*}}",
373 // CHECK-NEXT:      "kind": "IntegerLiteral",
374 // CHECK-NEXT:      "range": {
375 // CHECK-NEXT:       "begin": {
376 // CHECK-NEXT:        "col": 27,
377 // CHECK-NEXT:        "file": "{{.*}}",
378 // CHECK-NEXT:        "line": 14
379 // CHECK-NEXT:       },
380 // CHECK-NEXT:       "end": {
381 // CHECK-NEXT:        "col": 27,
382 // CHECK-NEXT:        "file": "{{.*}}",
383 // CHECK-NEXT:        "line": 14
384 // CHECK-NEXT:       }
385 // CHECK-NEXT:      },
386 // CHECK-NEXT:      "type": {
387 // CHECK-NEXT:       "qualType": "int"
388 // CHECK-NEXT:      },
389 // CHECK-NEXT:      "valueCategory": "rvalue",
390 // CHECK-NEXT:      "value": "100"
391 // CHECK-NEXT:     }
392 // CHECK-NEXT:    ]
393 // CHECK-NEXT:   },
394 // CHECK-NEXT:   {
395 // CHECK-NEXT:    "id": "0x{{.*}}",
396 // CHECK-NEXT:    "kind": "OverrideAttr",
397 // CHECK-NEXT:    "range": {
398 // CHECK-NEXT:     "begin": {
399 // CHECK-NEXT:      "col": 32,
400 // CHECK-NEXT:      "file": "{{.*}}",
401 // CHECK-NEXT:      "line": 14
402 // CHECK-NEXT:     },
403 // CHECK-NEXT:     "end": {
404 // CHECK-NEXT:      "col": 32,
405 // CHECK-NEXT:      "file": "{{.*}}",
406 // CHECK-NEXT:      "line": 14
407 // CHECK-NEXT:     }
408 // CHECK-NEXT:    }
409 // CHECK-NEXT:   }
410 // CHECK-NEXT:  ]
411 // CHECK-NEXT: }
412 
413 
414 // CHECK:  "kind": "CXXMethodDecl",
415 // CHECK-NEXT:  "loc": {
416 // CHECK-NEXT:   "col": 8,
417 // CHECK-NEXT:   "file": "{{.*}}",
418 // CHECK-NEXT:   "line": 18
419 // CHECK-NEXT:  },
420 // CHECK-NEXT:  "range": {
421 // CHECK-NEXT:   "begin": {
422 // CHECK-NEXT:    "col": 3,
423 // CHECK-NEXT:    "file": "{{.*}}",
424 // CHECK-NEXT:    "line": 18
425 // CHECK-NEXT:   },
426 // CHECK-NEXT:   "end": {
427 // CHECK-NEXT:    "col": 14,
428 // CHECK-NEXT:    "file": "{{.*}}",
429 // CHECK-NEXT:    "line": 18
430 // CHECK-NEXT:   }
431 // CHECK-NEXT:  },
432 // CHECK-NEXT:  "name": "Test1",
433 // CHECK-NEXT:  "type": {
434 // CHECK-NEXT:   "qualType": "void ()"
435 // CHECK-NEXT:  }
436 // CHECK-NEXT: }
437 
438 
439 // CHECK:  "kind": "CXXMethodDecl",
440 // CHECK-NEXT:  "loc": {
441 // CHECK-NEXT:   "col": 9,
442 // CHECK-NEXT:   "file": "{{.*}}",
443 // CHECK-NEXT:   "line": 20
444 // CHECK-NEXT:  },
445 // CHECK-NEXT:  "range": {
446 // CHECK-NEXT:   "begin": {
447 // CHECK-NEXT:    "col": 1,
448 // CHECK-NEXT:    "file": "{{.*}}",
449 // CHECK-NEXT:    "line": 20
450 // CHECK-NEXT:   },
451 // CHECK-NEXT:   "end": {
452 // CHECK-NEXT:    "col": 18,
453 // CHECK-NEXT:    "file": "{{.*}}",
454 // CHECK-NEXT:    "line": 20
455 // CHECK-NEXT:   }
456 // CHECK-NEXT:  },
457 // CHECK-NEXT:  "parentDeclContext": "0x{{.*}}",
458 // CHECK-NEXT:  "previousDecl": "0x{{.*}}",
459 // CHECK-NEXT:  "name": "Test1",
460 // CHECK-NEXT:  "type": {
461 // CHECK-NEXT:   "qualType": "void ()"
462 // CHECK-NEXT:  },
463 // CHECK-NEXT:  "inner": [
464 // CHECK-NEXT:   {
465 // CHECK-NEXT:    "id": "0x{{.*}}",
466 // CHECK-NEXT:    "kind": "CompoundStmt",
467 // CHECK-NEXT:    "range": {
468 // CHECK-NEXT:     "begin": {
469 // CHECK-NEXT:      "col": 17,
470 // CHECK-NEXT:      "file": "{{.*}}",
471 // CHECK-NEXT:      "line": 20
472 // CHECK-NEXT:     },
473 // CHECK-NEXT:     "end": {
474 // CHECK-NEXT:      "col": 18,
475 // CHECK-NEXT:      "file": "{{.*}}",
476 // CHECK-NEXT:      "line": 20
477 // CHECK-NEXT:     }
478 // CHECK-NEXT:    }
479 // CHECK-NEXT:   }
480 // CHECK-NEXT:  ]
481 // CHECK-NEXT: }
482 
483 
484 // CHECK:  "kind": "FunctionDecl",
485 // CHECK-NEXT:  "loc": {
486 // CHECK-NEXT:   "col": 6,
487 // CHECK-NEXT:   "file": "{{.*}}",
488 // CHECK-NEXT:   "line": 22
489 // CHECK-NEXT:  },
490 // CHECK-NEXT:  "range": {
491 // CHECK-NEXT:   "begin": {
492 // CHECK-NEXT:    "col": 1,
493 // CHECK-NEXT:    "file": "{{.*}}",
494 // CHECK-NEXT:    "line": 22
495 // CHECK-NEXT:   },
496 // CHECK-NEXT:   "end": {
497 // CHECK-NEXT:    "col": 12,
498 // CHECK-NEXT:    "file": "{{.*}}",
499 // CHECK-NEXT:    "line": 22
500 // CHECK-NEXT:   }
501 // CHECK-NEXT:  },
502 // CHECK-NEXT:  "isUsed": true,
503 // CHECK-NEXT:  "name": "Test1",
504 // CHECK-NEXT:  "type": {
505 // CHECK-NEXT:   "qualType": "void ()"
506 // CHECK-NEXT:  }
507 // CHECK-NEXT: }
508 
509 
510 // CHECK:  "kind": "FunctionDecl",
511 // CHECK-NEXT:  "loc": {
512 // CHECK-NEXT:   "col": 6,
513 // CHECK-NEXT:   "file": "{{.*}}",
514 // CHECK-NEXT:   "line": 23
515 // CHECK-NEXT:  },
516 // CHECK-NEXT:  "range": {
517 // CHECK-NEXT:   "begin": {
518 // CHECK-NEXT:    "col": 1,
519 // CHECK-NEXT:    "file": "{{.*}}",
520 // CHECK-NEXT:    "line": 23
521 // CHECK-NEXT:   },
522 // CHECK-NEXT:   "end": {
523 // CHECK-NEXT:    "col": 16,
524 // CHECK-NEXT:    "file": "{{.*}}",
525 // CHECK-NEXT:    "line": 23
526 // CHECK-NEXT:   }
527 // CHECK-NEXT:  },
528 // CHECK-NEXT:  "name": "Test2",
529 // CHECK-NEXT:  "type": {
530 // CHECK-NEXT:   "qualType": "void ()"
531 // CHECK-NEXT:  }
532 // CHECK-NEXT: }
533 
534 
535 // CHECK:  "kind": "FunctionDecl",
536 // CHECK-NEXT:  "loc": {
537 // CHECK-NEXT:   "col": 6,
538 // CHECK-NEXT:   "file": "{{.*}}",
539 // CHECK-NEXT:   "line": 24
540 // CHECK-NEXT:  },
541 // CHECK-NEXT:  "range": {
542 // CHECK-NEXT:   "begin": {
543 // CHECK-NEXT:    "col": 1,
544 // CHECK-NEXT:    "file": "{{.*}}",
545 // CHECK-NEXT:    "line": 24
546 // CHECK-NEXT:   },
547 // CHECK-NEXT:   "end": {
548 // CHECK-NEXT:    "col": 24,
549 // CHECK-NEXT:    "file": "{{.*}}",
550 // CHECK-NEXT:    "line": 24
551 // CHECK-NEXT:   }
552 // CHECK-NEXT:  },
553 // CHECK-NEXT:  "name": "Test3",
554 // CHECK-NEXT:  "type": {
555 // CHECK-NEXT:   "qualType": "void (int, int)"
556 // CHECK-NEXT:  },
557 // CHECK-NEXT:  "inner": [
558 // CHECK-NEXT:   {
559 // CHECK-NEXT:    "id": "0x{{.*}}",
560 // CHECK-NEXT:    "kind": "ParmVarDecl",
561 // CHECK-NEXT:    "loc": {
562 // CHECK-NEXT:     "col": 16,
563 // CHECK-NEXT:     "file": "{{.*}}",
564 // CHECK-NEXT:     "line": 24
565 // CHECK-NEXT:    },
566 // CHECK-NEXT:    "range": {
567 // CHECK-NEXT:     "begin": {
568 // CHECK-NEXT:      "col": 12,
569 // CHECK-NEXT:      "file": "{{.*}}",
570 // CHECK-NEXT:      "line": 24
571 // CHECK-NEXT:     },
572 // CHECK-NEXT:     "end": {
573 // CHECK-NEXT:      "col": 16,
574 // CHECK-NEXT:      "file": "{{.*}}",
575 // CHECK-NEXT:      "line": 24
576 // CHECK-NEXT:     }
577 // CHECK-NEXT:    },
578 // CHECK-NEXT:    "name": "a",
579 // CHECK-NEXT:    "type": {
580 // CHECK-NEXT:     "qualType": "int"
581 // CHECK-NEXT:    }
582 // CHECK-NEXT:   },
583 // CHECK-NEXT:   {
584 // CHECK-NEXT:    "id": "0x{{.*}}",
585 // CHECK-NEXT:    "kind": "ParmVarDecl",
586 // CHECK-NEXT:    "loc": {
587 // CHECK-NEXT:     "col": 23,
588 // CHECK-NEXT:     "file": "{{.*}}",
589 // CHECK-NEXT:     "line": 24
590 // CHECK-NEXT:    },
591 // CHECK-NEXT:    "range": {
592 // CHECK-NEXT:     "begin": {
593 // CHECK-NEXT:      "col": 19,
594 // CHECK-NEXT:      "file": "{{.*}}",
595 // CHECK-NEXT:      "line": 24
596 // CHECK-NEXT:     },
597 // CHECK-NEXT:     "end": {
598 // CHECK-NEXT:      "col": 23,
599 // CHECK-NEXT:      "file": "{{.*}}",
600 // CHECK-NEXT:      "line": 24
601 // CHECK-NEXT:     }
602 // CHECK-NEXT:    },
603 // CHECK-NEXT:    "name": "b",
604 // CHECK-NEXT:    "type": {
605 // CHECK-NEXT:     "qualType": "int"
606 // CHECK-NEXT:    }
607 // CHECK-NEXT:   }
608 // CHECK-NEXT:  ]
609 // CHECK-NEXT: }
610 
611 
612 // CHECK:  "kind": "FunctionDecl",
613 // CHECK-NEXT:  "loc": {
614 // CHECK-NEXT:   "col": 6,
615 // CHECK-NEXT:   "file": "{{.*}}",
616 // CHECK-NEXT:   "line": 25
617 // CHECK-NEXT:  },
618 // CHECK-NEXT:  "range": {
619 // CHECK-NEXT:   "begin": {
620 // CHECK-NEXT:    "col": 1,
621 // CHECK-NEXT:    "file": "{{.*}}",
622 // CHECK-NEXT:    "line": 25
623 // CHECK-NEXT:   },
624 // CHECK-NEXT:   "end": {
625 // CHECK-NEXT:    "col": 29,
626 // CHECK-NEXT:    "file": "{{.*}}",
627 // CHECK-NEXT:    "line": 25
628 // CHECK-NEXT:   }
629 // CHECK-NEXT:  },
630 // CHECK-NEXT:  "name": "Test4",
631 // CHECK-NEXT:  "type": {
632 // CHECK-NEXT:   "qualType": "void (int, int)"
633 // CHECK-NEXT:  },
634 // CHECK-NEXT:  "inner": [
635 // CHECK-NEXT:   {
636 // CHECK-NEXT:    "id": "0x{{.*}}",
637 // CHECK-NEXT:    "kind": "ParmVarDecl",
638 // CHECK-NEXT:    "loc": {
639 // CHECK-NEXT:     "col": 16,
640 // CHECK-NEXT:     "file": "{{.*}}",
641 // CHECK-NEXT:     "line": 25
642 // CHECK-NEXT:    },
643 // CHECK-NEXT:    "range": {
644 // CHECK-NEXT:     "begin": {
645 // CHECK-NEXT:      "col": 12,
646 // CHECK-NEXT:      "file": "{{.*}}",
647 // CHECK-NEXT:      "line": 25
648 // CHECK-NEXT:     },
649 // CHECK-NEXT:     "end": {
650 // CHECK-NEXT:      "col": 16,
651 // CHECK-NEXT:      "file": "{{.*}}",
652 // CHECK-NEXT:      "line": 25
653 // CHECK-NEXT:     }
654 // CHECK-NEXT:    },
655 // CHECK-NEXT:    "name": "a",
656 // CHECK-NEXT:    "type": {
657 // CHECK-NEXT:     "qualType": "int"
658 // CHECK-NEXT:    }
659 // CHECK-NEXT:   },
660 // CHECK-NEXT:   {
661 // CHECK-NEXT:    "id": "0x{{.*}}",
662 // CHECK-NEXT:    "kind": "ParmVarDecl",
663 // CHECK-NEXT:    "loc": {
664 // CHECK-NEXT:     "col": 23,
665 // CHECK-NEXT:     "file": "{{.*}}",
666 // CHECK-NEXT:     "line": 25
667 // CHECK-NEXT:    },
668 // CHECK-NEXT:    "range": {
669 // CHECK-NEXT:     "begin": {
670 // CHECK-NEXT:      "col": 19,
671 // CHECK-NEXT:      "file": "{{.*}}",
672 // CHECK-NEXT:      "line": 25
673 // CHECK-NEXT:     },
674 // CHECK-NEXT:     "end": {
675 // CHECK-NEXT:      "col": 27,
676 // CHECK-NEXT:      "file": "{{.*}}",
677 // CHECK-NEXT:      "line": 25
678 // CHECK-NEXT:     }
679 // CHECK-NEXT:    },
680 // CHECK-NEXT:    "name": "b",
681 // CHECK-NEXT:    "type": {
682 // CHECK-NEXT:     "qualType": "int"
683 // CHECK-NEXT:    },
684 // CHECK-NEXT:    "init": "c",
685 // CHECK-NEXT:    "inner": [
686 // CHECK-NEXT:     {
687 // CHECK-NEXT:      "id": "0x{{.*}}",
688 // CHECK-NEXT:      "kind": "IntegerLiteral",
689 // CHECK-NEXT:      "range": {
690 // CHECK-NEXT:       "begin": {
691 // CHECK-NEXT:        "col": 27,
692 // CHECK-NEXT:        "file": "{{.*}}",
693 // CHECK-NEXT:        "line": 25
694 // CHECK-NEXT:       },
695 // CHECK-NEXT:       "end": {
696 // CHECK-NEXT:        "col": 27,
697 // CHECK-NEXT:        "file": "{{.*}}",
698 // CHECK-NEXT:        "line": 25
699 // CHECK-NEXT:       }
700 // CHECK-NEXT:      },
701 // CHECK-NEXT:      "type": {
702 // CHECK-NEXT:       "qualType": "int"
703 // CHECK-NEXT:      },
704 // CHECK-NEXT:      "valueCategory": "rvalue",
705 // CHECK-NEXT:      "value": "12"
706 // CHECK-NEXT:     }
707 // CHECK-NEXT:    ]
708 // CHECK-NEXT:   }
709 // CHECK-NEXT:  ]
710 // CHECK-NEXT: }
711 
712 
713 // CHECK:  "kind": "FunctionDecl",
714 // CHECK-NEXT:  "loc": {
715 // CHECK-NEXT:   "col": 16,
716 // CHECK-NEXT:   "file": "{{.*}}",
717 // CHECK-NEXT:   "line": 26
718 // CHECK-NEXT:  },
719 // CHECK-NEXT:  "range": {
720 // CHECK-NEXT:   "begin": {
721 // CHECK-NEXT:    "col": 1,
722 // CHECK-NEXT:    "file": "{{.*}}",
723 // CHECK-NEXT:    "line": 26
724 // CHECK-NEXT:   },
725 // CHECK-NEXT:   "end": {
726 // CHECK-NEXT:    "col": 26,
727 // CHECK-NEXT:    "file": "{{.*}}",
728 // CHECK-NEXT:    "line": 26
729 // CHECK-NEXT:   }
730 // CHECK-NEXT:  },
731 // CHECK-NEXT:  "name": "Test5",
732 // CHECK-NEXT:  "type": {
733 // CHECK-NEXT:   "qualType": "void ()"
734 // CHECK-NEXT:  },
735 // CHECK-NEXT:  "constexpr": true
736 // CHECK-NEXT: }
737 
738 
739 // CHECK:  "kind": "FunctionDecl",
740 // CHECK-NEXT:  "loc": {
741 // CHECK-NEXT:   "col": 13,
742 // CHECK-NEXT:   "file": "{{.*}}",
743 // CHECK-NEXT:   "line": 27
744 // CHECK-NEXT:  },
745 // CHECK-NEXT:  "range": {
746 // CHECK-NEXT:   "begin": {
747 // CHECK-NEXT:    "col": 1,
748 // CHECK-NEXT:    "file": "{{.*}}",
749 // CHECK-NEXT:    "line": 27
750 // CHECK-NEXT:   },
751 // CHECK-NEXT:   "end": {
752 // CHECK-NEXT:    "col": 23,
753 // CHECK-NEXT:    "file": "{{.*}}",
754 // CHECK-NEXT:    "line": 27
755 // CHECK-NEXT:   }
756 // CHECK-NEXT:  },
757 // CHECK-NEXT:  "name": "Test6",
758 // CHECK-NEXT:  "type": {
759 // CHECK-NEXT:   "qualType": "void ()"
760 // CHECK-NEXT:  },
761 // CHECK-NEXT:  "storageClass": "static"
762 // CHECK-NEXT: }
763 
764 
765 // CHECK:  "kind": "FunctionDecl",
766 // CHECK-NEXT:  "loc": {
767 // CHECK-NEXT:   "col": 13,
768 // CHECK-NEXT:   "file": "{{.*}}",
769 // CHECK-NEXT:   "line": 28
770 // CHECK-NEXT:  },
771 // CHECK-NEXT:  "range": {
772 // CHECK-NEXT:   "begin": {
773 // CHECK-NEXT:    "col": 1,
774 // CHECK-NEXT:    "file": "{{.*}}",
775 // CHECK-NEXT:    "line": 28
776 // CHECK-NEXT:   },
777 // CHECK-NEXT:   "end": {
778 // CHECK-NEXT:    "col": 23,
779 // CHECK-NEXT:    "file": "{{.*}}",
780 // CHECK-NEXT:    "line": 28
781 // CHECK-NEXT:   }
782 // CHECK-NEXT:  },
783 // CHECK-NEXT:  "name": "Test7",
784 // CHECK-NEXT:  "type": {
785 // CHECK-NEXT:   "qualType": "void ()"
786 // CHECK-NEXT:  },
787 // CHECK-NEXT:  "storageClass": "extern"
788 // CHECK-NEXT: }
789 
790 
791 // CHECK:  "kind": "FunctionDecl",
792 // CHECK-NEXT:  "loc": {
793 // CHECK-NEXT:   "col": 13,
794 // CHECK-NEXT:   "file": "{{.*}}",
795 // CHECK-NEXT:   "line": 29
796 // CHECK-NEXT:  },
797 // CHECK-NEXT:  "range": {
798 // CHECK-NEXT:   "begin": {
799 // CHECK-NEXT:    "col": 1,
800 // CHECK-NEXT:    "file": "{{.*}}",
801 // CHECK-NEXT:    "line": 29
802 // CHECK-NEXT:   },
803 // CHECK-NEXT:   "end": {
804 // CHECK-NEXT:    "col": 23,
805 // CHECK-NEXT:    "file": "{{.*}}",
806 // CHECK-NEXT:    "line": 29
807 // CHECK-NEXT:   }
808 // CHECK-NEXT:  },
809 // CHECK-NEXT:  "name": "Test8",
810 // CHECK-NEXT:  "type": {
811 // CHECK-NEXT:   "qualType": "void ()"
812 // CHECK-NEXT:  },
813 // CHECK-NEXT:  "inline": true
814 // CHECK-NEXT: }
815 
816 
817 // CHECK:  "kind": "FunctionDecl",
818 // CHECK-NEXT:  "loc": {
819 // CHECK-NEXT:   "col": 6,
820 // CHECK-NEXT:   "file": "{{.*}}",
821 // CHECK-NEXT:   "line": 30
822 // CHECK-NEXT:  },
823 // CHECK-NEXT:  "range": {
824 // CHECK-NEXT:   "begin": {
825 // CHECK-NEXT:    "col": 1,
826 // CHECK-NEXT:    "file": "{{.*}}",
827 // CHECK-NEXT:    "line": 30
828 // CHECK-NEXT:   },
829 // CHECK-NEXT:   "end": {
830 // CHECK-NEXT:    "col": 18,
831 // CHECK-NEXT:    "file": "{{.*}}",
832 // CHECK-NEXT:    "line": 30
833 // CHECK-NEXT:   }
834 // CHECK-NEXT:  },
835 // CHECK-NEXT:  "name": "Test9",
836 // CHECK-NEXT:  "type": {
837 // CHECK-NEXT:   "qualType": "void () noexcept"
838 // CHECK-NEXT:  }
839 // CHECK-NEXT: }
840 
841 
842 // CHECK:  "kind": "FunctionDecl",
843 // CHECK-NEXT:  "loc": {
844 // CHECK-NEXT:   "col": 6,
845 // CHECK-NEXT:   "file": "{{.*}}",
846 // CHECK-NEXT:   "line": 31
847 // CHECK-NEXT:  },
848 // CHECK-NEXT:  "range": {
849 // CHECK-NEXT:   "begin": {
850 // CHECK-NEXT:    "col": 1,
851 // CHECK-NEXT:    "file": "{{.*}}",
852 // CHECK-NEXT:    "line": 31
853 // CHECK-NEXT:   },
854 // CHECK-NEXT:   "end": {
855 // CHECK-NEXT:    "col": 33,
856 // CHECK-NEXT:    "file": "{{.*}}",
857 // CHECK-NEXT:    "line": 31
858 // CHECK-NEXT:   }
859 // CHECK-NEXT:  },
860 // CHECK-NEXT:  "name": "Test10",
861 // CHECK-NEXT:  "type": {
862 // CHECK-NEXT:   "qualType": "void () noexcept(false)"
863 // CHECK-NEXT:  }
864 // CHECK-NEXT: }
865 
866 
867 // CHECK:  "kind": "FunctionDecl",
868 // CHECK-NEXT:  "loc": {
869 // CHECK-NEXT:   "col": 6,
870 // CHECK-NEXT:   "file": "{{.*}}",
871 // CHECK-NEXT:   "line": 32
872 // CHECK-NEXT:  },
873 // CHECK-NEXT:  "range": {
874 // CHECK-NEXT:   "begin": {
875 // CHECK-NEXT:    "col": 1,
876 // CHECK-NEXT:    "file": "{{.*}}",
877 // CHECK-NEXT:    "line": 32
878 // CHECK-NEXT:   },
879 // CHECK-NEXT:   "end": {
880 // CHECK-NEXT:    "col": 29,
881 // CHECK-NEXT:    "file": "{{.*}}",
882 // CHECK-NEXT:    "line": 32
883 // CHECK-NEXT:   }
884 // CHECK-NEXT:  },
885 // CHECK-NEXT:  "name": "Test11",
886 // CHECK-NEXT:  "type": {
887 // CHECK-NEXT:   "qualType": "void () noexcept(1)"
888 // CHECK-NEXT:  }
889 // CHECK-NEXT: }
890 
891 
892 // CHECK:  "kind": "FunctionTemplateDecl",
893 // CHECK-NEXT:  "loc": {
894 // CHECK-NEXT:   "col": 3,
895 // CHECK-NEXT:   "file": "{{.*}}",
896 // CHECK-NEXT:   "line": 35
897 // CHECK-NEXT:  },
898 // CHECK-NEXT:  "range": {
899 // CHECK-NEXT:   "begin": {
900 // CHECK-NEXT:    "col": 1,
901 // CHECK-NEXT:    "file": "{{.*}}",
902 // CHECK-NEXT:    "line": 34
903 // CHECK-NEXT:   },
904 // CHECK-NEXT:   "end": {
905 // CHECK-NEXT:    "col": 12,
906 // CHECK-NEXT:    "file": "{{.*}}",
907 // CHECK-NEXT:    "line": 35
908 // CHECK-NEXT:   }
909 // CHECK-NEXT:  },
910 // CHECK-NEXT:  "name": "Test12",
911 // CHECK-NEXT:  "inner": [
912 // CHECK-NEXT:   {
913 // CHECK-NEXT:    "id": "0x{{.*}}",
914 // CHECK-NEXT:    "kind": "TemplateTypeParmDecl",
915 // CHECK-NEXT:    "loc": {
916 // CHECK-NEXT:     "col": 20,
917 // CHECK-NEXT:     "file": "{{.*}}",
918 // CHECK-NEXT:     "line": 34
919 // CHECK-NEXT:    },
920 // CHECK-NEXT:    "range": {
921 // CHECK-NEXT:     "begin": {
922 // CHECK-NEXT:      "col": 11,
923 // CHECK-NEXT:      "file": "{{.*}}",
924 // CHECK-NEXT:      "line": 34
925 // CHECK-NEXT:     },
926 // CHECK-NEXT:     "end": {
927 // CHECK-NEXT:      "col": 20,
928 // CHECK-NEXT:      "file": "{{.*}}",
929 // CHECK-NEXT:      "line": 34
930 // CHECK-NEXT:     }
931 // CHECK-NEXT:    },
932 // CHECK-NEXT:    "isReferenced": true,
933 // CHECK-NEXT:    "name": "T",
934 // CHECK-NEXT:    "tagUsed": "typename",
935 // CHECK-NEXT:    "depth": 0,
936 // CHECK-NEXT:    "index": 0
937 // CHECK-NEXT:   },
938 // CHECK-NEXT:   {
939 // CHECK-NEXT:    "id": "0x{{.*}}",
940 // CHECK-NEXT:    "kind": "FunctionDecl",
941 // CHECK-NEXT:    "loc": {
942 // CHECK-NEXT:     "col": 3,
943 // CHECK-NEXT:     "file": "{{.*}}",
944 // CHECK-NEXT:     "line": 35
945 // CHECK-NEXT:    },
946 // CHECK-NEXT:    "range": {
947 // CHECK-NEXT:     "begin": {
948 // CHECK-NEXT:      "col": 1,
949 // CHECK-NEXT:      "file": "{{.*}}",
950 // CHECK-NEXT:      "line": 35
951 // CHECK-NEXT:     },
952 // CHECK-NEXT:     "end": {
953 // CHECK-NEXT:      "col": 12,
954 // CHECK-NEXT:      "file": "{{.*}}",
955 // CHECK-NEXT:      "line": 35
956 // CHECK-NEXT:     }
957 // CHECK-NEXT:    },
958 // CHECK-NEXT:    "name": "Test12",
959 // CHECK-NEXT:    "type": {
960 // CHECK-NEXT:     "qualType": "T (T &)"
961 // CHECK-NEXT:    },
962 // CHECK-NEXT:    "inner": [
963 // CHECK-NEXT:     {
964 // CHECK-NEXT:      "id": "0x{{.*}}",
965 // CHECK-NEXT:      "kind": "ParmVarDecl",
966 // CHECK-NEXT:      "loc": {
967 // CHECK-NEXT:       "col": 12,
968 // CHECK-NEXT:       "file": "{{.*}}",
969 // CHECK-NEXT:       "line": 35
970 // CHECK-NEXT:      },
971 // CHECK-NEXT:      "range": {
972 // CHECK-NEXT:       "begin": {
973 // CHECK-NEXT:        "col": 10,
974 // CHECK-NEXT:        "file": "{{.*}}",
975 // CHECK-NEXT:        "line": 35
976 // CHECK-NEXT:       },
977 // CHECK-NEXT:       "end": {
978 // CHECK-NEXT:        "col": 11,
979 // CHECK-NEXT:        "file": "{{.*}}",
980 // CHECK-NEXT:        "line": 35
981 // CHECK-NEXT:       }
982 // CHECK-NEXT:      },
983 // CHECK-NEXT:      "type": {
984 // CHECK-NEXT:       "qualType": "T &"
985 // CHECK-NEXT:      }
986 // CHECK-NEXT:     }
987 // CHECK-NEXT:    ]
988 // CHECK-NEXT:   }
989 // CHECK-NEXT:  ]
990 // CHECK-NEXT: }
991 
992 
993 // CHECK:  "kind": "FunctionDecl",
994 // CHECK-NEXT:  "loc": {
995 // CHECK-NEXT:   "col": 6,
996 // CHECK-NEXT:   "file": "{{.*}}",
997 // CHECK-NEXT:   "line": 37
998 // CHECK-NEXT:  },
999 // CHECK-NEXT:  "range": {
1000 // CHECK-NEXT:   "begin": {
1001 // CHECK-NEXT:    "col": 1,
1002 // CHECK-NEXT:    "file": "{{.*}}",
1003 // CHECK-NEXT:    "line": 37
1004 // CHECK-NEXT:   },
1005 // CHECK-NEXT:   "end": {
1006 // CHECK-NEXT:    "col": 19,
1007 // CHECK-NEXT:    "file": "{{.*}}",
1008 // CHECK-NEXT:    "line": 37
1009 // CHECK-NEXT:   }
1010 // CHECK-NEXT:  },
1011 // CHECK-NEXT:  "name": "Test13",
1012 // CHECK-NEXT:  "type": {
1013 // CHECK-NEXT:   "qualType": "void (int)"
1014 // CHECK-NEXT:  },
1015 // CHECK-NEXT:  "inner": [
1016 // CHECK-NEXT:   {
1017 // CHECK-NEXT:    "id": "0x{{.*}}",
1018 // CHECK-NEXT:    "kind": "ParmVarDecl",
1019 // CHECK-NEXT:    "loc": {
1020 // CHECK-NEXT:     "col": 16,
1021 // CHECK-NEXT:     "file": "{{.*}}",
1022 // CHECK-NEXT:     "line": 37
1023 // CHECK-NEXT:    },
1024 // CHECK-NEXT:    "range": {
1025 // CHECK-NEXT:     "begin": {
1026 // CHECK-NEXT:      "col": 13,
1027 // CHECK-NEXT:      "file": "{{.*}}",
1028 // CHECK-NEXT:      "line": 37
1029 // CHECK-NEXT:     },
1030 // CHECK-NEXT:     "end": {
1031 // CHECK-NEXT:      "col": 13,
1032 // CHECK-NEXT:      "file": "{{.*}}",
1033 // CHECK-NEXT:      "line": 37
1034 // CHECK-NEXT:     }
1035 // CHECK-NEXT:    },
1036 // CHECK-NEXT:    "type": {
1037 // CHECK-NEXT:     "qualType": "int"
1038 // CHECK-NEXT:    }
1039 // CHECK-NEXT:   },
1040 // CHECK-NEXT:   {
1041 // CHECK-NEXT:    "id": "0x{{.*}}",
1042 // CHECK-NEXT:    "kind": "CompoundStmt",
1043 // CHECK-NEXT:    "range": {
1044 // CHECK-NEXT:     "begin": {
1045 // CHECK-NEXT:      "col": 18,
1046 // CHECK-NEXT:      "file": "{{.*}}",
1047 // CHECK-NEXT:      "line": 37
1048 // CHECK-NEXT:     },
1049 // CHECK-NEXT:     "end": {
1050 // CHECK-NEXT:      "col": 19,
1051 // CHECK-NEXT:      "file": "{{.*}}",
1052 // CHECK-NEXT:      "line": 37
1053 // CHECK-NEXT:     }
1054 // CHECK-NEXT:    }
1055 // CHECK-NEXT:   }
1056 // CHECK-NEXT:  ]
1057 // CHECK-NEXT: }
1058 
1059 
1060 // CHECK:  "kind": "FunctionDecl",
1061 // CHECK-NEXT:  "loc": {
1062 // CHECK-NEXT:   "col": 6,
1063 // CHECK-NEXT:   "file": "{{.*}}",
1064 // CHECK-NEXT:   "line": 38
1065 // CHECK-NEXT:  },
1066 // CHECK-NEXT:  "range": {
1067 // CHECK-NEXT:   "begin": {
1068 // CHECK-NEXT:    "col": 1,
1069 // CHECK-NEXT:    "file": "{{.*}}",
1070 // CHECK-NEXT:    "line": 38
1071 // CHECK-NEXT:   },
1072 // CHECK-NEXT:   "end": {
1073 // CHECK-NEXT:    "col": 24,
1074 // CHECK-NEXT:    "file": "{{.*}}",
1075 // CHECK-NEXT:    "line": 38
1076 // CHECK-NEXT:   }
1077 // CHECK-NEXT:  },
1078 // CHECK-NEXT:  "name": "Test14",
1079 // CHECK-NEXT:  "type": {
1080 // CHECK-NEXT:   "qualType": "void (int, ...)"
1081 // CHECK-NEXT:  },
1082 // CHECK-NEXT:  "variadic": true,
1083 // CHECK-NEXT:  "inner": [
1084 // CHECK-NEXT:   {
1085 // CHECK-NEXT:    "id": "0x{{.*}}",
1086 // CHECK-NEXT:    "kind": "ParmVarDecl",
1087 // CHECK-NEXT:    "loc": {
1088 // CHECK-NEXT:     "col": 16,
1089 // CHECK-NEXT:     "file": "{{.*}}",
1090 // CHECK-NEXT:     "line": 38
1091 // CHECK-NEXT:    },
1092 // CHECK-NEXT:    "range": {
1093 // CHECK-NEXT:     "begin": {
1094 // CHECK-NEXT:      "col": 13,
1095 // CHECK-NEXT:      "file": "{{.*}}",
1096 // CHECK-NEXT:      "line": 38
1097 // CHECK-NEXT:     },
1098 // CHECK-NEXT:     "end": {
1099 // CHECK-NEXT:      "col": 13,
1100 // CHECK-NEXT:      "file": "{{.*}}",
1101 // CHECK-NEXT:      "line": 38
1102 // CHECK-NEXT:     }
1103 // CHECK-NEXT:    },
1104 // CHECK-NEXT:    "type": {
1105 // CHECK-NEXT:     "qualType": "int"
1106 // CHECK-NEXT:    }
1107 // CHECK-NEXT:   },
1108 // CHECK-NEXT:   {
1109 // CHECK-NEXT:    "id": "0x{{.*}}",
1110 // CHECK-NEXT:    "kind": "CompoundStmt",
1111 // CHECK-NEXT:    "range": {
1112 // CHECK-NEXT:     "begin": {
1113 // CHECK-NEXT:      "col": 23,
1114 // CHECK-NEXT:      "file": "{{.*}}",
1115 // CHECK-NEXT:      "line": 38
1116 // CHECK-NEXT:     },
1117 // CHECK-NEXT:     "end": {
1118 // CHECK-NEXT:      "col": 24,
1119 // CHECK-NEXT:      "file": "{{.*}}",
1120 // CHECK-NEXT:      "line": 38
1121 // CHECK-NEXT:     }
1122 // CHECK-NEXT:    }
1123 // CHECK-NEXT:   }
1124 // CHECK-NEXT:  ]
1125 // CHECK-NEXT: }
1126