• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: %clang_cc1 -triple x86_64-pc-win32 -Wno-unused -fblocks -fobjc-exceptions -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
2
3void TestBlockExpr(int x) {
4  ^{ x; };
5}
6
7void TestExprWithCleanup(int x) {
8  ^{ x; };
9}
10
11@interface A
12@end
13
14void TestObjCAtCatchStmt() {
15  @try {
16  } @catch(A *a) {
17  } @catch(...) {
18  } @finally {
19  }
20}
21
22// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
23
24
25// CHECK:  "kind": "FunctionDecl",
26// CHECK-NEXT:  "loc": {
27// CHECK-NEXT:   "offset": 143,
28// CHECK-NEXT:   "file": "{{.*}}",
29// CHECK-NEXT:   "line": 3,
30// CHECK-NEXT:   "col": 6,
31// CHECK-NEXT:   "tokLen": 13
32// CHECK-NEXT:  },
33// CHECK-NEXT:  "range": {
34// CHECK-NEXT:   "begin": {
35// CHECK-NEXT:    "offset": 138,
36// CHECK-NEXT:    "col": 1,
37// CHECK-NEXT:    "tokLen": 4
38// CHECK-NEXT:   },
39// CHECK-NEXT:   "end": {
40// CHECK-NEXT:    "offset": 177,
41// CHECK-NEXT:    "line": 5,
42// CHECK-NEXT:    "col": 1,
43// CHECK-NEXT:    "tokLen": 1
44// CHECK-NEXT:   }
45// CHECK-NEXT:  },
46// CHECK-NEXT:  "name": "TestBlockExpr",
47// CHECK-NEXT:  "mangledName": "TestBlockExpr",
48// CHECK-NEXT:  "type": {
49// CHECK-NEXT:   "qualType": "void (int)"
50// CHECK-NEXT:  },
51// CHECK-NEXT:  "inner": [
52// CHECK-NEXT:   {
53// CHECK-NEXT:    "id": "0x{{.*}}",
54// CHECK-NEXT:    "kind": "ParmVarDecl",
55// CHECK-NEXT:    "loc": {
56// CHECK-NEXT:     "offset": 161,
57// CHECK-NEXT:     "line": 3,
58// CHECK-NEXT:     "col": 24,
59// CHECK-NEXT:     "tokLen": 1
60// CHECK-NEXT:    },
61// CHECK-NEXT:    "range": {
62// CHECK-NEXT:     "begin": {
63// CHECK-NEXT:      "offset": 157,
64// CHECK-NEXT:      "col": 20,
65// CHECK-NEXT:      "tokLen": 3
66// CHECK-NEXT:     },
67// CHECK-NEXT:     "end": {
68// CHECK-NEXT:      "offset": 161,
69// CHECK-NEXT:      "col": 24,
70// CHECK-NEXT:      "tokLen": 1
71// CHECK-NEXT:     }
72// CHECK-NEXT:    },
73// CHECK-NEXT:    "isUsed": true,
74// CHECK-NEXT:    "name": "x",
75// CHECK-NEXT:    "mangledName": "x",
76// CHECK-NEXT:    "type": {
77// CHECK-NEXT:     "qualType": "int"
78// CHECK-NEXT:    }
79// CHECK-NEXT:   },
80// CHECK-NEXT:   {
81// CHECK-NEXT:    "id": "0x{{.*}}",
82// CHECK-NEXT:    "kind": "CompoundStmt",
83// CHECK-NEXT:    "range": {
84// CHECK-NEXT:     "begin": {
85// CHECK-NEXT:      "offset": 164,
86// CHECK-NEXT:      "col": 27,
87// CHECK-NEXT:      "tokLen": 1
88// CHECK-NEXT:     },
89// CHECK-NEXT:     "end": {
90// CHECK-NEXT:      "offset": 177,
91// CHECK-NEXT:      "line": 5,
92// CHECK-NEXT:      "col": 1,
93// CHECK-NEXT:      "tokLen": 1
94// CHECK-NEXT:     }
95// CHECK-NEXT:    },
96// CHECK-NEXT:    "inner": [
97// CHECK-NEXT:     {
98// CHECK-NEXT:      "id": "0x{{.*}}",
99// CHECK-NEXT:      "kind": "ExprWithCleanups",
100// CHECK-NEXT:      "range": {
101// CHECK-NEXT:       "begin": {
102// CHECK-NEXT:        "offset": 168,
103// CHECK-NEXT:        "line": 4,
104// CHECK-NEXT:        "col": 3,
105// CHECK-NEXT:        "tokLen": 1
106// CHECK-NEXT:       },
107// CHECK-NEXT:       "end": {
108// CHECK-NEXT:        "offset": 174,
109// CHECK-NEXT:        "col": 9,
110// CHECK-NEXT:        "tokLen": 1
111// CHECK-NEXT:       }
112// CHECK-NEXT:      },
113// CHECK-NEXT:      "type": {
114// CHECK-NEXT:       "qualType": "void (^)(void)"
115// CHECK-NEXT:      },
116// CHECK-NEXT:      "valueCategory": "rvalue",
117// CHECK-NEXT:      "cleanupsHaveSideEffects": true,
118// CHECK-NEXT:      "cleanups": [
119// CHECK-NEXT:       {
120// CHECK-NEXT:        "id": "0x{{.*}}",
121// CHECK-NEXT:        "kind": "BlockDecl"
122// CHECK-NEXT:       }
123// CHECK-NEXT:      ],
124// CHECK-NEXT:      "inner": [
125// CHECK-NEXT:       {
126// CHECK-NEXT:        "id": "0x{{.*}}",
127// CHECK-NEXT:        "kind": "BlockExpr",
128// CHECK-NEXT:        "range": {
129// CHECK-NEXT:         "begin": {
130// CHECK-NEXT:          "offset": 168,
131// CHECK-NEXT:          "col": 3,
132// CHECK-NEXT:          "tokLen": 1
133// CHECK-NEXT:         },
134// CHECK-NEXT:         "end": {
135// CHECK-NEXT:          "offset": 174,
136// CHECK-NEXT:          "col": 9,
137// CHECK-NEXT:          "tokLen": 1
138// CHECK-NEXT:         }
139// CHECK-NEXT:        },
140// CHECK-NEXT:        "type": {
141// CHECK-NEXT:         "qualType": "void (^)(void)"
142// CHECK-NEXT:        },
143// CHECK-NEXT:        "valueCategory": "rvalue",
144// CHECK-NEXT:        "inner": [
145// CHECK-NEXT:         {
146// CHECK-NEXT:          "id": "0x{{.*}}",
147// CHECK-NEXT:          "kind": "BlockDecl",
148// CHECK-NEXT:          "loc": {
149// CHECK-NEXT:           "offset": 168,
150// CHECK-NEXT:           "col": 3,
151// CHECK-NEXT:           "tokLen": 1
152// CHECK-NEXT:          },
153// CHECK-NEXT:          "range": {
154// CHECK-NEXT:           "begin": {
155// CHECK-NEXT:            "offset": 168,
156// CHECK-NEXT:            "col": 3,
157// CHECK-NEXT:            "tokLen": 1
158// CHECK-NEXT:           },
159// CHECK-NEXT:           "end": {
160// CHECK-NEXT:            "offset": 174,
161// CHECK-NEXT:            "col": 9,
162// CHECK-NEXT:            "tokLen": 1
163// CHECK-NEXT:           }
164// CHECK-NEXT:          },
165// CHECK-NEXT:          "inner": [
166// CHECK-NEXT:           {
167// CHECK-NEXT:            "kind": "Capture",
168// CHECK-NEXT:            "var": {
169// CHECK-NEXT:             "id": "0x{{.*}}",
170// CHECK-NEXT:             "kind": "ParmVarDecl",
171// CHECK-NEXT:             "name": "x",
172// CHECK-NEXT:             "type": {
173// CHECK-NEXT:              "qualType": "int"
174// CHECK-NEXT:             }
175// CHECK-NEXT:            }
176// CHECK-NEXT:           },
177// CHECK-NEXT:           {
178// CHECK-NEXT:            "id": "0x{{.*}}",
179// CHECK-NEXT:            "kind": "CompoundStmt",
180// CHECK-NEXT:            "range": {
181// CHECK-NEXT:             "begin": {
182// CHECK-NEXT:              "offset": 169,
183// CHECK-NEXT:              "col": 4,
184// CHECK-NEXT:              "tokLen": 1
185// CHECK-NEXT:             },
186// CHECK-NEXT:             "end": {
187// CHECK-NEXT:              "offset": 174,
188// CHECK-NEXT:              "col": 9,
189// CHECK-NEXT:              "tokLen": 1
190// CHECK-NEXT:             }
191// CHECK-NEXT:            },
192// CHECK-NEXT:            "inner": [
193// CHECK-NEXT:             {
194// CHECK-NEXT:              "id": "0x{{.*}}",
195// CHECK-NEXT:              "kind": "ImplicitCastExpr",
196// CHECK-NEXT:              "range": {
197// CHECK-NEXT:               "begin": {
198// CHECK-NEXT:                "offset": 171,
199// CHECK-NEXT:                "col": 6,
200// CHECK-NEXT:                "tokLen": 1
201// CHECK-NEXT:               },
202// CHECK-NEXT:               "end": {
203// CHECK-NEXT:                "offset": 171,
204// CHECK-NEXT:                "col": 6,
205// CHECK-NEXT:                "tokLen": 1
206// CHECK-NEXT:               }
207// CHECK-NEXT:              },
208// CHECK-NEXT:              "type": {
209// CHECK-NEXT:               "qualType": "int"
210// CHECK-NEXT:              },
211// CHECK-NEXT:              "valueCategory": "rvalue",
212// CHECK-NEXT:              "castKind": "LValueToRValue",
213// CHECK-NEXT:              "inner": [
214// CHECK-NEXT:               {
215// CHECK-NEXT:                "id": "0x{{.*}}",
216// CHECK-NEXT:                "kind": "DeclRefExpr",
217// CHECK-NEXT:                "range": {
218// CHECK-NEXT:                 "begin": {
219// CHECK-NEXT:                  "offset": 171,
220// CHECK-NEXT:                  "col": 6,
221// CHECK-NEXT:                  "tokLen": 1
222// CHECK-NEXT:                 },
223// CHECK-NEXT:                 "end": {
224// CHECK-NEXT:                  "offset": 171,
225// CHECK-NEXT:                  "col": 6,
226// CHECK-NEXT:                  "tokLen": 1
227// CHECK-NEXT:                 }
228// CHECK-NEXT:                },
229// CHECK-NEXT:                "type": {
230// CHECK-NEXT:                 "qualType": "const int"
231// CHECK-NEXT:                },
232// CHECK-NEXT:                "valueCategory": "lvalue",
233// CHECK-NEXT:                "referencedDecl": {
234// CHECK-NEXT:                 "id": "0x{{.*}}",
235// CHECK-NEXT:                 "kind": "ParmVarDecl",
236// CHECK-NEXT:                 "name": "x",
237// CHECK-NEXT:                 "type": {
238// CHECK-NEXT:                  "qualType": "int"
239// CHECK-NEXT:                 }
240// CHECK-NEXT:                }
241// CHECK-NEXT:               }
242// CHECK-NEXT:              ]
243// CHECK-NEXT:             }
244// CHECK-NEXT:            ]
245// CHECK-NEXT:           }
246// CHECK-NEXT:          ]
247// CHECK-NEXT:         }
248// CHECK-NEXT:        ]
249// CHECK-NEXT:       }
250// CHECK-NEXT:      ]
251// CHECK-NEXT:     }
252// CHECK-NEXT:    ]
253// CHECK-NEXT:   }
254// CHECK-NEXT:  ]
255// CHECK-NEXT: }
256
257
258// CHECK:  "kind": "FunctionDecl",
259// CHECK-NEXT:  "loc": {
260// CHECK-NEXT:   "offset": 185,
261// CHECK-NEXT:   "file": "{{.*}}",
262// CHECK-NEXT:   "line": 7,
263// CHECK-NEXT:   "col": 6,
264// CHECK-NEXT:   "tokLen": 19
265// CHECK-NEXT:  },
266// CHECK-NEXT:  "range": {
267// CHECK-NEXT:   "begin": {
268// CHECK-NEXT:    "offset": 180,
269// CHECK-NEXT:    "col": 1,
270// CHECK-NEXT:    "tokLen": 4
271// CHECK-NEXT:   },
272// CHECK-NEXT:   "end": {
273// CHECK-NEXT:    "offset": 225,
274// CHECK-NEXT:    "line": 9,
275// CHECK-NEXT:    "col": 1,
276// CHECK-NEXT:    "tokLen": 1
277// CHECK-NEXT:   }
278// CHECK-NEXT:  },
279// CHECK-NEXT:  "name": "TestExprWithCleanup",
280// CHECK-NEXT:  "mangledName": "TestExprWithCleanup",
281// CHECK-NEXT:  "type": {
282// CHECK-NEXT:   "qualType": "void (int)"
283// CHECK-NEXT:  },
284// CHECK-NEXT:  "inner": [
285// CHECK-NEXT:   {
286// CHECK-NEXT:    "id": "0x{{.*}}",
287// CHECK-NEXT:    "kind": "ParmVarDecl",
288// CHECK-NEXT:    "loc": {
289// CHECK-NEXT:     "offset": 209,
290// CHECK-NEXT:     "line": 7,
291// CHECK-NEXT:     "col": 30,
292// CHECK-NEXT:     "tokLen": 1
293// CHECK-NEXT:    },
294// CHECK-NEXT:    "range": {
295// CHECK-NEXT:     "begin": {
296// CHECK-NEXT:      "offset": 205,
297// CHECK-NEXT:      "col": 26,
298// CHECK-NEXT:      "tokLen": 3
299// CHECK-NEXT:     },
300// CHECK-NEXT:     "end": {
301// CHECK-NEXT:      "offset": 209,
302// CHECK-NEXT:      "col": 30,
303// CHECK-NEXT:      "tokLen": 1
304// CHECK-NEXT:     }
305// CHECK-NEXT:    },
306// CHECK-NEXT:    "isUsed": true,
307// CHECK-NEXT:    "name": "x",
308// CHECK-NEXT:    "mangledName": "x",
309// CHECK-NEXT:    "type": {
310// CHECK-NEXT:     "qualType": "int"
311// CHECK-NEXT:    }
312// CHECK-NEXT:   },
313// CHECK-NEXT:   {
314// CHECK-NEXT:    "id": "0x{{.*}}",
315// CHECK-NEXT:    "kind": "CompoundStmt",
316// CHECK-NEXT:    "range": {
317// CHECK-NEXT:     "begin": {
318// CHECK-NEXT:      "offset": 212,
319// CHECK-NEXT:      "col": 33,
320// CHECK-NEXT:      "tokLen": 1
321// CHECK-NEXT:     },
322// CHECK-NEXT:     "end": {
323// CHECK-NEXT:      "offset": 225,
324// CHECK-NEXT:      "line": 9,
325// CHECK-NEXT:      "col": 1,
326// CHECK-NEXT:      "tokLen": 1
327// CHECK-NEXT:     }
328// CHECK-NEXT:    },
329// CHECK-NEXT:    "inner": [
330// CHECK-NEXT:     {
331// CHECK-NEXT:      "id": "0x{{.*}}",
332// CHECK-NEXT:      "kind": "ExprWithCleanups",
333// CHECK-NEXT:      "range": {
334// CHECK-NEXT:       "begin": {
335// CHECK-NEXT:        "offset": 216,
336// CHECK-NEXT:        "line": 8,
337// CHECK-NEXT:        "col": 3,
338// CHECK-NEXT:        "tokLen": 1
339// CHECK-NEXT:       },
340// CHECK-NEXT:       "end": {
341// CHECK-NEXT:        "offset": 222,
342// CHECK-NEXT:        "col": 9,
343// CHECK-NEXT:        "tokLen": 1
344// CHECK-NEXT:       }
345// CHECK-NEXT:      },
346// CHECK-NEXT:      "type": {
347// CHECK-NEXT:       "qualType": "void (^)(void)"
348// CHECK-NEXT:      },
349// CHECK-NEXT:      "valueCategory": "rvalue",
350// CHECK-NEXT:      "cleanupsHaveSideEffects": true,
351// CHECK-NEXT:      "cleanups": [
352// CHECK-NEXT:       {
353// CHECK-NEXT:        "id": "0x{{.*}}",
354// CHECK-NEXT:        "kind": "BlockDecl"
355// CHECK-NEXT:       }
356// CHECK-NEXT:      ],
357// CHECK-NEXT:      "inner": [
358// CHECK-NEXT:       {
359// CHECK-NEXT:        "id": "0x{{.*}}",
360// CHECK-NEXT:        "kind": "BlockExpr",
361// CHECK-NEXT:        "range": {
362// CHECK-NEXT:         "begin": {
363// CHECK-NEXT:          "offset": 216,
364// CHECK-NEXT:          "col": 3,
365// CHECK-NEXT:          "tokLen": 1
366// CHECK-NEXT:         },
367// CHECK-NEXT:         "end": {
368// CHECK-NEXT:          "offset": 222,
369// CHECK-NEXT:          "col": 9,
370// CHECK-NEXT:          "tokLen": 1
371// CHECK-NEXT:         }
372// CHECK-NEXT:        },
373// CHECK-NEXT:        "type": {
374// CHECK-NEXT:         "qualType": "void (^)(void)"
375// CHECK-NEXT:        },
376// CHECK-NEXT:        "valueCategory": "rvalue",
377// CHECK-NEXT:        "inner": [
378// CHECK-NEXT:         {
379// CHECK-NEXT:          "id": "0x{{.*}}",
380// CHECK-NEXT:          "kind": "BlockDecl",
381// CHECK-NEXT:          "loc": {
382// CHECK-NEXT:           "offset": 216,
383// CHECK-NEXT:           "col": 3,
384// CHECK-NEXT:           "tokLen": 1
385// CHECK-NEXT:          },
386// CHECK-NEXT:          "range": {
387// CHECK-NEXT:           "begin": {
388// CHECK-NEXT:            "offset": 216,
389// CHECK-NEXT:            "col": 3,
390// CHECK-NEXT:            "tokLen": 1
391// CHECK-NEXT:           },
392// CHECK-NEXT:           "end": {
393// CHECK-NEXT:            "offset": 222,
394// CHECK-NEXT:            "col": 9,
395// CHECK-NEXT:            "tokLen": 1
396// CHECK-NEXT:           }
397// CHECK-NEXT:          },
398// CHECK-NEXT:          "inner": [
399// CHECK-NEXT:           {
400// CHECK-NEXT:            "kind": "Capture",
401// CHECK-NEXT:            "var": {
402// CHECK-NEXT:             "id": "0x{{.*}}",
403// CHECK-NEXT:             "kind": "ParmVarDecl",
404// CHECK-NEXT:             "name": "x",
405// CHECK-NEXT:             "type": {
406// CHECK-NEXT:              "qualType": "int"
407// CHECK-NEXT:             }
408// CHECK-NEXT:            }
409// CHECK-NEXT:           },
410// CHECK-NEXT:           {
411// CHECK-NEXT:            "id": "0x{{.*}}",
412// CHECK-NEXT:            "kind": "CompoundStmt",
413// CHECK-NEXT:            "range": {
414// CHECK-NEXT:             "begin": {
415// CHECK-NEXT:              "offset": 217,
416// CHECK-NEXT:              "col": 4,
417// CHECK-NEXT:              "tokLen": 1
418// CHECK-NEXT:             },
419// CHECK-NEXT:             "end": {
420// CHECK-NEXT:              "offset": 222,
421// CHECK-NEXT:              "col": 9,
422// CHECK-NEXT:              "tokLen": 1
423// CHECK-NEXT:             }
424// CHECK-NEXT:            },
425// CHECK-NEXT:            "inner": [
426// CHECK-NEXT:             {
427// CHECK-NEXT:              "id": "0x{{.*}}",
428// CHECK-NEXT:              "kind": "ImplicitCastExpr",
429// CHECK-NEXT:              "range": {
430// CHECK-NEXT:               "begin": {
431// CHECK-NEXT:                "offset": 219,
432// CHECK-NEXT:                "col": 6,
433// CHECK-NEXT:                "tokLen": 1
434// CHECK-NEXT:               },
435// CHECK-NEXT:               "end": {
436// CHECK-NEXT:                "offset": 219,
437// CHECK-NEXT:                "col": 6,
438// CHECK-NEXT:                "tokLen": 1
439// CHECK-NEXT:               }
440// CHECK-NEXT:              },
441// CHECK-NEXT:              "type": {
442// CHECK-NEXT:               "qualType": "int"
443// CHECK-NEXT:              },
444// CHECK-NEXT:              "valueCategory": "rvalue",
445// CHECK-NEXT:              "castKind": "LValueToRValue",
446// CHECK-NEXT:              "inner": [
447// CHECK-NEXT:               {
448// CHECK-NEXT:                "id": "0x{{.*}}",
449// CHECK-NEXT:                "kind": "DeclRefExpr",
450// CHECK-NEXT:                "range": {
451// CHECK-NEXT:                 "begin": {
452// CHECK-NEXT:                  "offset": 219,
453// CHECK-NEXT:                  "col": 6,
454// CHECK-NEXT:                  "tokLen": 1
455// CHECK-NEXT:                 },
456// CHECK-NEXT:                 "end": {
457// CHECK-NEXT:                  "offset": 219,
458// CHECK-NEXT:                  "col": 6,
459// CHECK-NEXT:                  "tokLen": 1
460// CHECK-NEXT:                 }
461// CHECK-NEXT:                },
462// CHECK-NEXT:                "type": {
463// CHECK-NEXT:                 "qualType": "const int"
464// CHECK-NEXT:                },
465// CHECK-NEXT:                "valueCategory": "lvalue",
466// CHECK-NEXT:                "referencedDecl": {
467// CHECK-NEXT:                 "id": "0x{{.*}}",
468// CHECK-NEXT:                 "kind": "ParmVarDecl",
469// CHECK-NEXT:                 "name": "x",
470// CHECK-NEXT:                 "type": {
471// CHECK-NEXT:                  "qualType": "int"
472// CHECK-NEXT:                 }
473// CHECK-NEXT:                }
474// CHECK-NEXT:               }
475// CHECK-NEXT:              ]
476// CHECK-NEXT:             }
477// CHECK-NEXT:            ]
478// CHECK-NEXT:           }
479// CHECK-NEXT:          ]
480// CHECK-NEXT:         }
481// CHECK-NEXT:        ]
482// CHECK-NEXT:       }
483// CHECK-NEXT:      ]
484// CHECK-NEXT:     }
485// CHECK-NEXT:    ]
486// CHECK-NEXT:   }
487// CHECK-NEXT:  ]
488// CHECK-NEXT: }
489
490
491// CHECK:  "kind": "FunctionDecl",
492// CHECK-NEXT:  "loc": {
493// CHECK-NEXT:   "offset": 252,
494// CHECK-NEXT:   "file": "{{.*}}",
495// CHECK-NEXT:   "line": 14,
496// CHECK-NEXT:   "col": 6,
497// CHECK-NEXT:   "tokLen": 19
498// CHECK-NEXT:  },
499// CHECK-NEXT:  "range": {
500// CHECK-NEXT:   "begin": {
501// CHECK-NEXT:    "offset": 247,
502// CHECK-NEXT:    "col": 1,
503// CHECK-NEXT:    "tokLen": 4
504// CHECK-NEXT:   },
505// CHECK-NEXT:   "end": {
506// CHECK-NEXT:    "offset": 341,
507// CHECK-NEXT:    "line": 20,
508// CHECK-NEXT:    "col": 1,
509// CHECK-NEXT:    "tokLen": 1
510// CHECK-NEXT:   }
511// CHECK-NEXT:  },
512// CHECK-NEXT:  "name": "TestObjCAtCatchStmt",
513// CHECK-NEXT:  "mangledName": "TestObjCAtCatchStmt",
514// CHECK-NEXT:  "type": {
515// CHECK-NEXT:   "qualType": "void ()"
516// CHECK-NEXT:  },
517// CHECK-NEXT:  "inner": [
518// CHECK-NEXT:   {
519// CHECK-NEXT:    "id": "0x{{.*}}",
520// CHECK-NEXT:    "kind": "CompoundStmt",
521// CHECK-NEXT:    "range": {
522// CHECK-NEXT:     "begin": {
523// CHECK-NEXT:      "offset": 274,
524// CHECK-NEXT:      "line": 14,
525// CHECK-NEXT:      "col": 28,
526// CHECK-NEXT:      "tokLen": 1
527// CHECK-NEXT:     },
528// CHECK-NEXT:     "end": {
529// CHECK-NEXT:      "offset": 341,
530// CHECK-NEXT:      "line": 20,
531// CHECK-NEXT:      "col": 1,
532// CHECK-NEXT:      "tokLen": 1
533// CHECK-NEXT:     }
534// CHECK-NEXT:    },
535// CHECK-NEXT:    "inner": [
536// CHECK-NEXT:     {
537// CHECK-NEXT:      "id": "0x{{.*}}",
538// CHECK-NEXT:      "kind": "ObjCAtTryStmt",
539// CHECK-NEXT:      "range": {
540// CHECK-NEXT:       "begin": {
541// CHECK-NEXT:        "offset": 278,
542// CHECK-NEXT:        "line": 15,
543// CHECK-NEXT:        "col": 3,
544// CHECK-NEXT:        "tokLen": 1
545// CHECK-NEXT:       },
546// CHECK-NEXT:       "end": {
547// CHECK-NEXT:        "offset": 339,
548// CHECK-NEXT:        "line": 19,
549// CHECK-NEXT:        "col": 3,
550// CHECK-NEXT:        "tokLen": 1
551// CHECK-NEXT:       }
552// CHECK-NEXT:      },
553// CHECK-NEXT:      "inner": [
554// CHECK-NEXT:       {
555// CHECK-NEXT:        "id": "0x{{.*}}",
556// CHECK-NEXT:        "kind": "CompoundStmt",
557// CHECK-NEXT:        "range": {
558// CHECK-NEXT:         "begin": {
559// CHECK-NEXT:          "offset": 283,
560// CHECK-NEXT:          "line": 15,
561// CHECK-NEXT:          "col": 8,
562// CHECK-NEXT:          "tokLen": 1
563// CHECK-NEXT:         },
564// CHECK-NEXT:         "end": {
565// CHECK-NEXT:          "offset": 287,
566// CHECK-NEXT:          "line": 16,
567// CHECK-NEXT:          "col": 3,
568// CHECK-NEXT:          "tokLen": 1
569// CHECK-NEXT:         }
570// CHECK-NEXT:        }
571// CHECK-NEXT:       },
572// CHECK-NEXT:       {
573// CHECK-NEXT:        "id": "0x{{.*}}",
574// CHECK-NEXT:        "kind": "ObjCAtCatchStmt",
575// CHECK-NEXT:        "range": {
576// CHECK-NEXT:         "begin": {
577// CHECK-NEXT:          "offset": 289,
578// CHECK-NEXT:          "col": 5,
579// CHECK-NEXT:          "tokLen": 1
580// CHECK-NEXT:         },
581// CHECK-NEXT:         "end": {
582// CHECK-NEXT:          "offset": 306,
583// CHECK-NEXT:          "line": 17,
584// CHECK-NEXT:          "col": 3,
585// CHECK-NEXT:          "tokLen": 1
586// CHECK-NEXT:         }
587// CHECK-NEXT:        },
588// CHECK-NEXT:        "inner": [
589// CHECK-NEXT:         {
590// CHECK-NEXT:          "id": "0x{{.*}}",
591// CHECK-NEXT:          "kind": "VarDecl",
592// CHECK-NEXT:          "loc": {
593// CHECK-NEXT:           "offset": 299,
594// CHECK-NEXT:           "line": 16,
595// CHECK-NEXT:           "col": 15,
596// CHECK-NEXT:           "tokLen": 1
597// CHECK-NEXT:          },
598// CHECK-NEXT:          "range": {
599// CHECK-NEXT:           "begin": {
600// CHECK-NEXT:            "offset": 296,
601// CHECK-NEXT:            "col": 12,
602// CHECK-NEXT:            "tokLen": 1
603// CHECK-NEXT:           },
604// CHECK-NEXT:           "end": {
605// CHECK-NEXT:            "offset": 299,
606// CHECK-NEXT:            "col": 15,
607// CHECK-NEXT:            "tokLen": 1
608// CHECK-NEXT:           }
609// CHECK-NEXT:          },
610// CHECK-NEXT:          "name": "a",
611// CHECK-NEXT:          "mangledName": "a",
612// CHECK-NEXT:          "type": {
613// CHECK-NEXT:           "qualType": "A *"
614// CHECK-NEXT:          }
615// CHECK-NEXT:         },
616// CHECK-NEXT:         {
617// CHECK-NEXT:          "id": "0x{{.*}}",
618// CHECK-NEXT:          "kind": "CompoundStmt",
619// CHECK-NEXT:          "range": {
620// CHECK-NEXT:           "begin": {
621// CHECK-NEXT:            "offset": 302,
622// CHECK-NEXT:            "col": 18,
623// CHECK-NEXT:            "tokLen": 1
624// CHECK-NEXT:           },
625// CHECK-NEXT:           "end": {
626// CHECK-NEXT:            "offset": 306,
627// CHECK-NEXT:            "line": 17,
628// CHECK-NEXT:            "col": 3,
629// CHECK-NEXT:            "tokLen": 1
630// CHECK-NEXT:           }
631// CHECK-NEXT:          }
632// CHECK-NEXT:         }
633// CHECK-NEXT:        ]
634// CHECK-NEXT:       },
635// CHECK-NEXT:       {
636// CHECK-NEXT:        "id": "0x{{.*}}",
637// CHECK-NEXT:        "kind": "ObjCAtCatchStmt",
638// CHECK-NEXT:        "range": {
639// CHECK-NEXT:         "begin": {
640// CHECK-NEXT:          "offset": 308,
641// CHECK-NEXT:          "col": 5,
642// CHECK-NEXT:          "tokLen": 1
643// CHECK-NEXT:         },
644// CHECK-NEXT:         "end": {
645// CHECK-NEXT:          "offset": 324,
646// CHECK-NEXT:          "line": 18,
647// CHECK-NEXT:          "col": 3,
648// CHECK-NEXT:          "tokLen": 1
649// CHECK-NEXT:         }
650// CHECK-NEXT:        },
651// CHECK-NEXT:        "isCatchAll": true,
652// CHECK-NEXT:        "inner": [
653// CHECK-NEXT:         {
654// CHECK-NEXT:          "id": "0x{{.*}}",
655// CHECK-NEXT:          "kind": "CompoundStmt",
656// CHECK-NEXT:          "range": {
657// CHECK-NEXT:           "begin": {
658// CHECK-NEXT:            "offset": 320,
659// CHECK-NEXT:            "line": 17,
660// CHECK-NEXT:            "col": 17,
661// CHECK-NEXT:            "tokLen": 1
662// CHECK-NEXT:           },
663// CHECK-NEXT:           "end": {
664// CHECK-NEXT:            "offset": 324,
665// CHECK-NEXT:            "line": 18,
666// CHECK-NEXT:            "col": 3,
667// CHECK-NEXT:            "tokLen": 1
668// CHECK-NEXT:           }
669// CHECK-NEXT:          }
670// CHECK-NEXT:         }
671// CHECK-NEXT:        ]
672// CHECK-NEXT:       },
673// CHECK-NEXT:       {
674// CHECK-NEXT:        "id": "0x{{.*}}",
675// CHECK-NEXT:        "kind": "ObjCAtFinallyStmt",
676// CHECK-NEXT:        "range": {
677// CHECK-NEXT:         "begin": {
678// CHECK-NEXT:          "offset": 326,
679// CHECK-NEXT:          "col": 5,
680// CHECK-NEXT:          "tokLen": 1
681// CHECK-NEXT:         },
682// CHECK-NEXT:         "end": {
683// CHECK-NEXT:          "offset": 339,
684// CHECK-NEXT:          "line": 19,
685// CHECK-NEXT:          "col": 3,
686// CHECK-NEXT:          "tokLen": 1
687// CHECK-NEXT:         }
688// CHECK-NEXT:        },
689// CHECK-NEXT:        "inner": [
690// CHECK-NEXT:         {
691// CHECK-NEXT:          "id": "0x{{.*}}",
692// CHECK-NEXT:          "kind": "CapturedStmt",
693// CHECK-NEXT:          "range": {
694// CHECK-NEXT:           "begin": {
695// CHECK-NEXT:            "offset": 335,
696// CHECK-NEXT:            "line": 18,
697// CHECK-NEXT:            "col": 14,
698// CHECK-NEXT:            "tokLen": 1
699// CHECK-NEXT:           },
700// CHECK-NEXT:           "end": {
701// CHECK-NEXT:            "offset": 339,
702// CHECK-NEXT:            "line": 19,
703// CHECK-NEXT:            "col": 3,
704// CHECK-NEXT:            "tokLen": 1
705// CHECK-NEXT:           }
706// CHECK-NEXT:          },
707// CHECK-NEXT:          "inner": [
708// CHECK-NEXT:           {
709// CHECK-NEXT:            "id": "0x{{.*}}",
710// CHECK-NEXT:            "kind": "CapturedDecl",
711// CHECK-NEXT:            "loc": {},
712// CHECK-NEXT:            "range": {
713// CHECK-NEXT:             "begin": {},
714// CHECK-NEXT:             "end": {}
715// CHECK-NEXT:            },
716// CHECK-NEXT:            "inner": [
717// CHECK-NEXT:             {
718// CHECK-NEXT:              "id": "0x{{.*}}",
719// CHECK-NEXT:              "kind": "CompoundStmt",
720// CHECK-NEXT:              "range": {
721// CHECK-NEXT:               "begin": {
722// CHECK-NEXT:                "offset": 335,
723// CHECK-NEXT:                "line": 18,
724// CHECK-NEXT:                "col": 14,
725// CHECK-NEXT:                "tokLen": 1
726// CHECK-NEXT:               },
727// CHECK-NEXT:               "end": {
728// CHECK-NEXT:                "offset": 339,
729// CHECK-NEXT:                "line": 19,
730// CHECK-NEXT:                "col": 3,
731// CHECK-NEXT:                "tokLen": 1
732// CHECK-NEXT:               }
733// CHECK-NEXT:              }
734// CHECK-NEXT:             },
735// CHECK-NEXT:             {
736// CHECK-NEXT:              "id": "0x{{.*}}",
737// CHECK-NEXT:              "kind": "ImplicitParamDecl",
738// CHECK-NEXT:              "loc": {
739// CHECK-NEXT:               "offset": 335,
740// CHECK-NEXT:               "line": 18,
741// CHECK-NEXT:               "col": 14,
742// CHECK-NEXT:               "tokLen": 1
743// CHECK-NEXT:              },
744// CHECK-NEXT:              "range": {
745// CHECK-NEXT:               "begin": {
746// CHECK-NEXT:                "offset": 335,
747// CHECK-NEXT:                "col": 14,
748// CHECK-NEXT:                "tokLen": 1
749// CHECK-NEXT:               },
750// CHECK-NEXT:               "end": {
751// CHECK-NEXT:                "offset": 335,
752// CHECK-NEXT:                "col": 14,
753// CHECK-NEXT:                "tokLen": 1
754// CHECK-NEXT:               }
755// CHECK-NEXT:              },
756// CHECK-NEXT:              "isImplicit": true,
757// CHECK-NEXT:              "name": "__context",
758// CHECK-NEXT:              "mangledName": "__context",
759// CHECK-NEXT:              "type": {
760// CHECK-NEXT:               "qualType": "struct (anonymous at {{.*}}:18:14) *"
761// CHECK-NEXT:              }
762// CHECK-NEXT:             }
763// CHECK-NEXT:            ]
764// CHECK-NEXT:           }
765// CHECK-NEXT:          ]
766// CHECK-NEXT:         }
767// CHECK-NEXT:        ]
768// CHECK-NEXT:       }
769// CHECK-NEXT:      ]
770// CHECK-NEXT:     }
771// CHECK-NEXT:    ]
772// CHECK-NEXT:   }
773// CHECK-NEXT:  ]
774// CHECK-NEXT: }
775