1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
2 
3 #line 4 "test.c"
4 int a;
5 
6 #line 32 "bar.h"
7 int b;
8 int c;
9 
10 #line 11 "test.c"
11 int d;
12 int e;
13 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
14 
15 
16 // CHECK:  "kind": "TranslationUnitDecl",
17 // CHECK-NEXT:  "loc": {},
18 // CHECK-NEXT:  "range": {
19 // CHECK-NEXT:   "begin": {},
20 // CHECK-NEXT:   "end": {}
21 // CHECK-NEXT:  },
22 // CHECK-NEXT:  "inner": [
23 // CHECK-NEXT:   {
24 // CHECK-NEXT:    "id": "0x{{.*}}",
25 // CHECK-NEXT:    "kind": "TypedefDecl",
26 // CHECK-NEXT:    "loc": {},
27 // CHECK-NEXT:    "range": {
28 // CHECK-NEXT:     "begin": {},
29 // CHECK-NEXT:     "end": {}
30 // CHECK-NEXT:    },
31 // CHECK-NEXT:    "isImplicit": true,
32 // CHECK-NEXT:    "name": "__int128_t",
33 // CHECK-NEXT:    "type": {
34 // CHECK-NEXT:     "qualType": "__int128"
35 // CHECK-NEXT:    },
36 // CHECK-NEXT:    "inner": [
37 // CHECK-NEXT:     {
38 // CHECK-NEXT:      "id": "0x{{.*}}",
39 // CHECK-NEXT:      "kind": "BuiltinType",
40 // CHECK-NEXT:      "type": {
41 // CHECK-NEXT:       "qualType": "__int128"
42 // CHECK-NEXT:      }
43 // CHECK-NEXT:     }
44 // CHECK-NEXT:    ]
45 // CHECK-NEXT:   },
46 // CHECK-NEXT:   {
47 // CHECK-NEXT:    "id": "0x{{.*}}",
48 // CHECK-NEXT:    "kind": "TypedefDecl",
49 // CHECK-NEXT:    "loc": {},
50 // CHECK-NEXT:    "range": {
51 // CHECK-NEXT:     "begin": {},
52 // CHECK-NEXT:     "end": {}
53 // CHECK-NEXT:    },
54 // CHECK-NEXT:    "isImplicit": true,
55 // CHECK-NEXT:    "name": "__uint128_t",
56 // CHECK-NEXT:    "type": {
57 // CHECK-NEXT:     "qualType": "unsigned __int128"
58 // CHECK-NEXT:    },
59 // CHECK-NEXT:    "inner": [
60 // CHECK-NEXT:     {
61 // CHECK-NEXT:      "id": "0x{{.*}}",
62 // CHECK-NEXT:      "kind": "BuiltinType",
63 // CHECK-NEXT:      "type": {
64 // CHECK-NEXT:       "qualType": "unsigned __int128"
65 // CHECK-NEXT:      }
66 // CHECK-NEXT:     }
67 // CHECK-NEXT:    ]
68 // CHECK-NEXT:   },
69 // CHECK-NEXT:   {
70 // CHECK-NEXT:    "id": "0x{{.*}}",
71 // CHECK-NEXT:    "kind": "TypedefDecl",
72 // CHECK-NEXT:    "loc": {},
73 // CHECK-NEXT:    "range": {
74 // CHECK-NEXT:     "begin": {},
75 // CHECK-NEXT:     "end": {}
76 // CHECK-NEXT:    },
77 // CHECK-NEXT:    "isImplicit": true,
78 // CHECK-NEXT:    "name": "__NSConstantString",
79 // CHECK-NEXT:    "type": {
80 // CHECK-NEXT:     "qualType": "struct __NSConstantString_tag"
81 // CHECK-NEXT:    },
82 // CHECK-NEXT:    "inner": [
83 // CHECK-NEXT:     {
84 // CHECK-NEXT:      "id": "0x{{.*}}",
85 // CHECK-NEXT:      "kind": "RecordType",
86 // CHECK-NEXT:      "type": {
87 // CHECK-NEXT:       "qualType": "struct __NSConstantString_tag"
88 // CHECK-NEXT:      },
89 // CHECK-NEXT:      "decl": {
90 // CHECK-NEXT:       "id": "0x{{.*}}",
91 // CHECK-NEXT:       "kind": "RecordDecl",
92 // CHECK-NEXT:       "name": "__NSConstantString_tag"
93 // CHECK-NEXT:      }
94 // CHECK-NEXT:     }
95 // CHECK-NEXT:    ]
96 // CHECK-NEXT:   },
97 // CHECK-NEXT:   {
98 // CHECK-NEXT:    "id": "0x{{.*}}",
99 // CHECK-NEXT:    "kind": "TypedefDecl",
100 // CHECK-NEXT:    "loc": {},
101 // CHECK-NEXT:    "range": {
102 // CHECK-NEXT:     "begin": {},
103 // CHECK-NEXT:     "end": {}
104 // CHECK-NEXT:    },
105 // CHECK-NEXT:    "isImplicit": true,
106 // CHECK-NEXT:    "name": "__builtin_ms_va_list",
107 // CHECK-NEXT:    "type": {
108 // CHECK-NEXT:     "qualType": "char *"
109 // CHECK-NEXT:    },
110 // CHECK-NEXT:    "inner": [
111 // CHECK-NEXT:     {
112 // CHECK-NEXT:      "id": "0x{{.*}}",
113 // CHECK-NEXT:      "kind": "PointerType",
114 // CHECK-NEXT:      "type": {
115 // CHECK-NEXT:       "qualType": "char *"
116 // CHECK-NEXT:      },
117 // CHECK-NEXT:      "inner": [
118 // CHECK-NEXT:       {
119 // CHECK-NEXT:        "id": "0x{{.*}}",
120 // CHECK-NEXT:        "kind": "BuiltinType",
121 // CHECK-NEXT:        "type": {
122 // CHECK-NEXT:         "qualType": "char"
123 // CHECK-NEXT:        }
124 // CHECK-NEXT:       }
125 // CHECK-NEXT:      ]
126 // CHECK-NEXT:     }
127 // CHECK-NEXT:    ]
128 // CHECK-NEXT:   },
129 // CHECK-NEXT:   {
130 // CHECK-NEXT:    "id": "0x{{.*}}",
131 // CHECK-NEXT:    "kind": "TypedefDecl",
132 // CHECK-NEXT:    "loc": {},
133 // CHECK-NEXT:    "range": {
134 // CHECK-NEXT:     "begin": {},
135 // CHECK-NEXT:     "end": {}
136 // CHECK-NEXT:    },
137 // CHECK-NEXT:    "isImplicit": true,
138 // CHECK-NEXT:    "name": "__builtin_va_list",
139 // CHECK-NEXT:    "type": {
140 // CHECK-NEXT:     "qualType": "struct __va_list_tag [1]"
141 // CHECK-NEXT:    },
142 // CHECK-NEXT:    "inner": [
143 // CHECK-NEXT:     {
144 // CHECK-NEXT:      "id": "0x{{.*}}",
145 // CHECK-NEXT:      "kind": "ConstantArrayType",
146 // CHECK-NEXT:      "type": {
147 // CHECK-NEXT:       "qualType": "struct __va_list_tag [1]"
148 // CHECK-NEXT:      },
149 // CHECK-NEXT:      "size": 1,
150 // CHECK-NEXT:      "inner": [
151 // CHECK-NEXT:       {
152 // CHECK-NEXT:        "id": "0x{{.*}}",
153 // CHECK-NEXT:        "kind": "RecordType",
154 // CHECK-NEXT:        "type": {
155 // CHECK-NEXT:         "qualType": "struct __va_list_tag"
156 // CHECK-NEXT:        },
157 // CHECK-NEXT:        "decl": {
158 // CHECK-NEXT:         "id": "0x{{.*}}",
159 // CHECK-NEXT:         "kind": "RecordDecl",
160 // CHECK-NEXT:         "name": "__va_list_tag"
161 // CHECK-NEXT:        }
162 // CHECK-NEXT:       }
163 // CHECK-NEXT:      ]
164 // CHECK-NEXT:     }
165 // CHECK-NEXT:    ]
166 // CHECK-NEXT:   },
167 // CHECK-NEXT:   {
168 // CHECK-NEXT:    "id": "0x{{.*}}",
169 // CHECK-NEXT:    "kind": "VarDecl",
170 // CHECK-NEXT:    "loc": {
171 // CHECK-NEXT:     "offset": 105,
172 // CHECK-NEXT:     "file": "{{.*}}",
173 // CHECK-NEXT:     "line": 4,
174 // CHECK-NEXT:     "presumedFile": "test.c",
175 // CHECK-NEXT:     "col": 5,
176 // CHECK-NEXT:     "tokLen": 1
177 // CHECK-NEXT:    },
178 // CHECK-NEXT:    "range": {
179 // CHECK-NEXT:     "begin": {
180 // CHECK-NEXT:      "offset": 101,
181 // CHECK-NEXT:      "col": 1,
182 // CHECK-NEXT:      "tokLen": 3
183 // CHECK-NEXT:     },
184 // CHECK-NEXT:     "end": {
185 // CHECK-NEXT:      "offset": 105,
186 // CHECK-NEXT:      "col": 5,
187 // CHECK-NEXT:      "tokLen": 1
188 // CHECK-NEXT:     }
189 // CHECK-NEXT:    },
190 // CHECK-NEXT:    "name": "a",
191 // CHECK-NEXT:    "mangledName": "a",
192 // CHECK-NEXT:    "type": {
193 // CHECK-NEXT:     "qualType": "int"
194 // CHECK-NEXT:    }
195 // CHECK-NEXT:   },
196 // CHECK-NEXT:   {
197 // CHECK-NEXT:    "id": "0x{{.*}}",
198 // CHECK-NEXT:    "kind": "VarDecl",
199 // CHECK-NEXT:    "loc": {
200 // CHECK-NEXT:     "offset": 130,
201 // CHECK-NEXT:     "line": 7,
202 // CHECK-NEXT:     "presumedFile": "bar.h",
203 // CHECK-NEXT:     "presumedLine": 32,
204 // CHECK-NEXT:     "col": 5,
205 // CHECK-NEXT:     "tokLen": 1
206 // CHECK-NEXT:    },
207 // CHECK-NEXT:    "range": {
208 // CHECK-NEXT:     "begin": {
209 // CHECK-NEXT:      "offset": 126,
210 // CHECK-NEXT:      "col": 1,
211 // CHECK-NEXT:      "tokLen": 3
212 // CHECK-NEXT:     },
213 // CHECK-NEXT:     "end": {
214 // CHECK-NEXT:      "offset": 130,
215 // CHECK-NEXT:      "col": 5,
216 // CHECK-NEXT:      "tokLen": 1
217 // CHECK-NEXT:     }
218 // CHECK-NEXT:    },
219 // CHECK-NEXT:    "name": "b",
220 // CHECK-NEXT:    "mangledName": "b",
221 // CHECK-NEXT:    "type": {
222 // CHECK-NEXT:     "qualType": "int"
223 // CHECK-NEXT:    }
224 // CHECK-NEXT:   },
225 // CHECK-NEXT:   {
226 // CHECK-NEXT:    "id": "0x{{.*}}",
227 // CHECK-NEXT:    "kind": "VarDecl",
228 // CHECK-NEXT:    "loc": {
229 // CHECK-NEXT:     "offset": 137,
230 // CHECK-NEXT:     "line": 8,
231 // CHECK-NEXT:     "presumedLine": 33,
232 // CHECK-NEXT:     "col": 5,
233 // CHECK-NEXT:     "tokLen": 1
234 // CHECK-NEXT:    },
235 // CHECK-NEXT:    "range": {
236 // CHECK-NEXT:     "begin": {
237 // CHECK-NEXT:      "offset": 133,
238 // CHECK-NEXT:      "col": 1,
239 // CHECK-NEXT:      "tokLen": 3
240 // CHECK-NEXT:     },
241 // CHECK-NEXT:     "end": {
242 // CHECK-NEXT:      "offset": 137,
243 // CHECK-NEXT:      "col": 5,
244 // CHECK-NEXT:      "tokLen": 1
245 // CHECK-NEXT:     }
246 // CHECK-NEXT:    },
247 // CHECK-NEXT:    "name": "c",
248 // CHECK-NEXT:    "mangledName": "c",
249 // CHECK-NEXT:    "type": {
250 // CHECK-NEXT:     "qualType": "int"
251 // CHECK-NEXT:    }
252 // CHECK-NEXT:   },
253 // CHECK-NEXT:   {
254 // CHECK-NEXT:    "id": "0x{{.*}}",
255 // CHECK-NEXT:    "kind": "VarDecl",
256 // CHECK-NEXT:    "loc": {
257 // CHECK-NEXT:     "offset": 163,
258 // CHECK-NEXT:     "line": 11,
259 // CHECK-NEXT:     "presumedFile": "test.c",
260 // CHECK-NEXT:     "col": 5,
261 // CHECK-NEXT:     "tokLen": 1
262 // CHECK-NEXT:    },
263 // CHECK-NEXT:    "range": {
264 // CHECK-NEXT:     "begin": {
265 // CHECK-NEXT:      "offset": 159,
266 // CHECK-NEXT:      "col": 1,
267 // CHECK-NEXT:      "tokLen": 3
268 // CHECK-NEXT:     },
269 // CHECK-NEXT:     "end": {
270 // CHECK-NEXT:      "offset": 163,
271 // CHECK-NEXT:      "col": 5,
272 // CHECK-NEXT:      "tokLen": 1
273 // CHECK-NEXT:     }
274 // CHECK-NEXT:    },
275 // CHECK-NEXT:    "name": "d",
276 // CHECK-NEXT:    "mangledName": "d",
277 // CHECK-NEXT:    "type": {
278 // CHECK-NEXT:     "qualType": "int"
279 // CHECK-NEXT:    }
280 // CHECK-NEXT:   },
281 // CHECK-NEXT:   {
282 // CHECK-NEXT:    "id": "0x{{.*}}",
283 // CHECK-NEXT:    "kind": "VarDecl",
284 // CHECK-NEXT:    "loc": {
285 // CHECK-NEXT:     "offset": 170,
286 // CHECK-NEXT:     "line": 12,
287 // CHECK-NEXT:     "col": 5,
288 // CHECK-NEXT:     "tokLen": 1
289 // CHECK-NEXT:    },
290 // CHECK-NEXT:    "range": {
291 // CHECK-NEXT:     "begin": {
292 // CHECK-NEXT:      "offset": 166,
293 // CHECK-NEXT:      "col": 1,
294 // CHECK-NEXT:      "tokLen": 3
295 // CHECK-NEXT:     },
296 // CHECK-NEXT:     "end": {
297 // CHECK-NEXT:      "offset": 170,
298 // CHECK-NEXT:      "col": 5,
299 // CHECK-NEXT:      "tokLen": 1
300 // CHECK-NEXT:     }
301 // CHECK-NEXT:    },
302 // CHECK-NEXT:    "name": "e",
303 // CHECK-NEXT:    "mangledName": "e",
304 // CHECK-NEXT:    "type": {
305 // CHECK-NEXT:     "qualType": "int"
306 // CHECK-NEXT:    }
307 // CHECK-NEXT:   }
308 // CHECK-NEXT:  ]
309 // CHECK-NEXT: }
310