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