1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s 2 3 namespace Test { 4 5 namespace NS { 6 void Function(); 7 } 8 void NS::Function() {} 9 10 struct S { 11 void Method(); 12 }; 13 void S::Method() {} 14 15 } // namespace Test 16 17 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py 18 19 // CHECK-NOT: {{^}}Dumping 20 // CHECK: "kind": "NamespaceDecl", 21 // CHECK-NEXT: "loc": { 22 // CHECK-NEXT: "offset": 116, 23 // CHECK-NEXT: "file": "{{.*}}", 24 // CHECK-NEXT: "line": 3, 25 // CHECK-NEXT: "col": 11, 26 // CHECK-NEXT: "tokLen": 4 27 // CHECK-NEXT: }, 28 // CHECK-NEXT: "range": { 29 // CHECK-NEXT: "begin": { 30 // CHECK-NEXT: "offset": 106, 31 // CHECK-NEXT: "col": 1, 32 // CHECK-NEXT: "tokLen": 9 33 // CHECK-NEXT: }, 34 // CHECK-NEXT: "end": { 35 // CHECK-NEXT: "offset": 234, 36 // CHECK-NEXT: "line": 15, 37 // CHECK-NEXT: "col": 1, 38 // CHECK-NEXT: "tokLen": 1 39 // CHECK-NEXT: } 40 // CHECK-NEXT: }, 41 // CHECK-NEXT: "name": "Test", 42 // CHECK-NEXT: "inner": [ 43 // CHECK-NEXT: { 44 // CHECK-NEXT: "id": "0x{{.*}}", 45 // CHECK-NEXT: "kind": "NamespaceDecl", 46 // CHECK-NEXT: "loc": { 47 // CHECK-NEXT: "offset": 134, 48 // CHECK-NEXT: "line": 5, 49 // CHECK-NEXT: "col": 11, 50 // CHECK-NEXT: "tokLen": 2 51 // CHECK-NEXT: }, 52 // CHECK-NEXT: "range": { 53 // CHECK-NEXT: "begin": { 54 // CHECK-NEXT: "offset": 124, 55 // CHECK-NEXT: "col": 1, 56 // CHECK-NEXT: "tokLen": 9 57 // CHECK-NEXT: }, 58 // CHECK-NEXT: "end": { 59 // CHECK-NEXT: "offset": 156, 60 // CHECK-NEXT: "line": 7, 61 // CHECK-NEXT: "col": 1, 62 // CHECK-NEXT: "tokLen": 1 63 // CHECK-NEXT: } 64 // CHECK-NEXT: }, 65 // CHECK-NEXT: "name": "NS", 66 // CHECK-NEXT: "inner": [ 67 // CHECK-NEXT: { 68 // CHECK-NEXT: "id": "0x{{.*}}", 69 // CHECK-NEXT: "kind": "FunctionDecl", 70 // CHECK-NEXT: "loc": { 71 // CHECK-NEXT: "offset": 144, 72 // CHECK-NEXT: "line": 6, 73 // CHECK-NEXT: "col": 6, 74 // CHECK-NEXT: "tokLen": 8 75 // CHECK-NEXT: }, 76 // CHECK-NEXT: "range": { 77 // CHECK-NEXT: "begin": { 78 // CHECK-NEXT: "offset": 139, 79 // CHECK-NEXT: "col": 1, 80 // CHECK-NEXT: "tokLen": 4 81 // CHECK-NEXT: }, 82 // CHECK-NEXT: "end": { 83 // CHECK-NEXT: "offset": 153, 84 // CHECK-NEXT: "col": 15, 85 // CHECK-NEXT: "tokLen": 1 86 // CHECK-NEXT: } 87 // CHECK-NEXT: }, 88 // CHECK-NEXT: "name": "Function", 89 // CHECK-NEXT: "mangledName": "_ZN4Test2NS8FunctionEv", 90 // CHECK-NEXT: "type": { 91 // CHECK-NEXT: "qualType": "void ()" 92 // CHECK-NEXT: } 93 // CHECK-NEXT: } 94 // CHECK-NEXT: ] 95 // CHECK-NEXT: }, 96 // CHECK-NEXT: { 97 // CHECK-NEXT: "id": "0x{{.*}}", 98 // CHECK-NEXT: "kind": "FunctionDecl", 99 // CHECK-NEXT: "loc": { 100 // CHECK-NEXT: "offset": 167, 101 // CHECK-NEXT: "line": 8, 102 // CHECK-NEXT: "col": 10, 103 // CHECK-NEXT: "tokLen": 8 104 // CHECK-NEXT: }, 105 // CHECK-NEXT: "range": { 106 // CHECK-NEXT: "begin": { 107 // CHECK-NEXT: "offset": 158, 108 // CHECK-NEXT: "col": 1, 109 // CHECK-NEXT: "tokLen": 4 110 // CHECK-NEXT: }, 111 // CHECK-NEXT: "end": { 112 // CHECK-NEXT: "offset": 179, 113 // CHECK-NEXT: "col": 22, 114 // CHECK-NEXT: "tokLen": 1 115 // CHECK-NEXT: } 116 // CHECK-NEXT: }, 117 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}", 118 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 119 // CHECK-NEXT: "name": "Function", 120 // CHECK-NEXT: "mangledName": "_ZN4Test2NS8FunctionEv", 121 // CHECK-NEXT: "type": { 122 // CHECK-NEXT: "qualType": "void ()" 123 // CHECK-NEXT: }, 124 // CHECK-NEXT: "inner": [ 125 // CHECK-NEXT: { 126 // CHECK-NEXT: "id": "0x{{.*}}", 127 // CHECK-NEXT: "kind": "CompoundStmt", 128 // CHECK-NEXT: "range": { 129 // CHECK-NEXT: "begin": { 130 // CHECK-NEXT: "offset": 178, 131 // CHECK-NEXT: "col": 21, 132 // CHECK-NEXT: "tokLen": 1 133 // CHECK-NEXT: }, 134 // CHECK-NEXT: "end": { 135 // CHECK-NEXT: "offset": 179, 136 // CHECK-NEXT: "col": 22, 137 // CHECK-NEXT: "tokLen": 1 138 // CHECK-NEXT: } 139 // CHECK-NEXT: } 140 // CHECK-NEXT: } 141 // CHECK-NEXT: ] 142 // CHECK-NEXT: }, 143 // CHECK-NEXT: { 144 // CHECK-NEXT: "id": "0x{{.*}}", 145 // CHECK-NEXT: "kind": "CXXRecordDecl", 146 // CHECK-NEXT: "loc": { 147 // CHECK-NEXT: "offset": 189, 148 // CHECK-NEXT: "line": 10, 149 // CHECK-NEXT: "col": 8, 150 // CHECK-NEXT: "tokLen": 1 151 // CHECK-NEXT: }, 152 // CHECK-NEXT: "range": { 153 // CHECK-NEXT: "begin": { 154 // CHECK-NEXT: "offset": 182, 155 // CHECK-NEXT: "col": 1, 156 // CHECK-NEXT: "tokLen": 6 157 // CHECK-NEXT: }, 158 // CHECK-NEXT: "end": { 159 // CHECK-NEXT: "offset": 210, 160 // CHECK-NEXT: "line": 12, 161 // CHECK-NEXT: "col": 1, 162 // CHECK-NEXT: "tokLen": 1 163 // CHECK-NEXT: } 164 // CHECK-NEXT: }, 165 // CHECK-NEXT: "name": "S", 166 // CHECK-NEXT: "tagUsed": "struct", 167 // CHECK-NEXT: "completeDefinition": true, 168 // CHECK-NEXT: "definitionData": { 169 // CHECK-NEXT: "canConstDefaultInit": true, 170 // CHECK-NEXT: "canPassInRegisters": true, 171 // CHECK-NEXT: "copyAssign": { 172 // CHECK-NEXT: "hasConstParam": true, 173 // CHECK-NEXT: "implicitHasConstParam": true, 174 // CHECK-NEXT: "needsImplicit": true, 175 // CHECK-NEXT: "simple": true, 176 // CHECK-NEXT: "trivial": true 177 // CHECK-NEXT: }, 178 // CHECK-NEXT: "copyCtor": { 179 // CHECK-NEXT: "hasConstParam": true, 180 // CHECK-NEXT: "implicitHasConstParam": true, 181 // CHECK-NEXT: "needsImplicit": true, 182 // CHECK-NEXT: "simple": true, 183 // CHECK-NEXT: "trivial": true 184 // CHECK-NEXT: }, 185 // CHECK-NEXT: "defaultCtor": { 186 // CHECK-NEXT: "defaultedIsConstexpr": true, 187 // CHECK-NEXT: "exists": true, 188 // CHECK-NEXT: "isConstexpr": true, 189 // CHECK-NEXT: "needsImplicit": true, 190 // CHECK-NEXT: "trivial": true 191 // CHECK-NEXT: }, 192 // CHECK-NEXT: "dtor": { 193 // CHECK-NEXT: "irrelevant": true, 194 // CHECK-NEXT: "needsImplicit": true, 195 // CHECK-NEXT: "simple": true, 196 // CHECK-NEXT: "trivial": true 197 // CHECK-NEXT: }, 198 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 199 // CHECK-NEXT: "isAggregate": true, 200 // CHECK-NEXT: "isEmpty": true, 201 // CHECK-NEXT: "isLiteral": true, 202 // CHECK-NEXT: "isPOD": true, 203 // CHECK-NEXT: "isStandardLayout": true, 204 // CHECK-NEXT: "isTrivial": true, 205 // CHECK-NEXT: "isTriviallyCopyable": true, 206 // CHECK-NEXT: "moveAssign": { 207 // CHECK-NEXT: "exists": true, 208 // CHECK-NEXT: "needsImplicit": true, 209 // CHECK-NEXT: "simple": true, 210 // CHECK-NEXT: "trivial": true 211 // CHECK-NEXT: }, 212 // CHECK-NEXT: "moveCtor": { 213 // CHECK-NEXT: "exists": true, 214 // CHECK-NEXT: "needsImplicit": true, 215 // CHECK-NEXT: "simple": true, 216 // CHECK-NEXT: "trivial": true 217 // CHECK-NEXT: } 218 // CHECK-NEXT: }, 219 // CHECK-NEXT: "inner": [ 220 // CHECK-NEXT: { 221 // CHECK-NEXT: "id": "0x{{.*}}", 222 // CHECK-NEXT: "kind": "CXXRecordDecl", 223 // CHECK-NEXT: "loc": { 224 // CHECK-NEXT: "offset": 189, 225 // CHECK-NEXT: "line": 10, 226 // CHECK-NEXT: "col": 8, 227 // CHECK-NEXT: "tokLen": 1 228 // CHECK-NEXT: }, 229 // CHECK-NEXT: "range": { 230 // CHECK-NEXT: "begin": { 231 // CHECK-NEXT: "offset": 182, 232 // CHECK-NEXT: "col": 1, 233 // CHECK-NEXT: "tokLen": 6 234 // CHECK-NEXT: }, 235 // CHECK-NEXT: "end": { 236 // CHECK-NEXT: "offset": 189, 237 // CHECK-NEXT: "col": 8, 238 // CHECK-NEXT: "tokLen": 1 239 // CHECK-NEXT: } 240 // CHECK-NEXT: }, 241 // CHECK-NEXT: "isImplicit": true, 242 // CHECK-NEXT: "name": "S", 243 // CHECK-NEXT: "tagUsed": "struct" 244 // CHECK-NEXT: }, 245 // CHECK-NEXT: { 246 // CHECK-NEXT: "id": "0x{{.*}}", 247 // CHECK-NEXT: "kind": "CXXMethodDecl", 248 // CHECK-NEXT: "loc": { 249 // CHECK-NEXT: "offset": 200, 250 // CHECK-NEXT: "line": 11, 251 // CHECK-NEXT: "col": 8, 252 // CHECK-NEXT: "tokLen": 6 253 // CHECK-NEXT: }, 254 // CHECK-NEXT: "range": { 255 // CHECK-NEXT: "begin": { 256 // CHECK-NEXT: "offset": 195, 257 // CHECK-NEXT: "col": 3, 258 // CHECK-NEXT: "tokLen": 4 259 // CHECK-NEXT: }, 260 // CHECK-NEXT: "end": { 261 // CHECK-NEXT: "offset": 207, 262 // CHECK-NEXT: "col": 15, 263 // CHECK-NEXT: "tokLen": 1 264 // CHECK-NEXT: } 265 // CHECK-NEXT: }, 266 // CHECK-NEXT: "name": "Method", 267 // CHECK-NEXT: "mangledName": "_ZN4Test1S6MethodEv", 268 // CHECK-NEXT: "type": { 269 // CHECK-NEXT: "qualType": "void ()" 270 // CHECK-NEXT: } 271 // CHECK-NEXT: } 272 // CHECK-NEXT: ] 273 // CHECK-NEXT: }, 274 // CHECK-NEXT: { 275 // CHECK-NEXT: "id": "0x{{.*}}", 276 // CHECK-NEXT: "kind": "CXXMethodDecl", 277 // CHECK-NEXT: "loc": { 278 // CHECK-NEXT: "offset": 221, 279 // CHECK-NEXT: "line": 13, 280 // CHECK-NEXT: "col": 9, 281 // CHECK-NEXT: "tokLen": 6 282 // CHECK-NEXT: }, 283 // CHECK-NEXT: "range": { 284 // CHECK-NEXT: "begin": { 285 // CHECK-NEXT: "offset": 213, 286 // CHECK-NEXT: "col": 1, 287 // CHECK-NEXT: "tokLen": 4 288 // CHECK-NEXT: }, 289 // CHECK-NEXT: "end": { 290 // CHECK-NEXT: "offset": 231, 291 // CHECK-NEXT: "col": 19, 292 // CHECK-NEXT: "tokLen": 1 293 // CHECK-NEXT: } 294 // CHECK-NEXT: }, 295 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}", 296 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 297 // CHECK-NEXT: "name": "Method", 298 // CHECK-NEXT: "mangledName": "_ZN4Test1S6MethodEv", 299 // CHECK-NEXT: "type": { 300 // CHECK-NEXT: "qualType": "void ()" 301 // CHECK-NEXT: }, 302 // CHECK-NEXT: "inner": [ 303 // CHECK-NEXT: { 304 // CHECK-NEXT: "id": "0x{{.*}}", 305 // CHECK-NEXT: "kind": "CompoundStmt", 306 // CHECK-NEXT: "range": { 307 // CHECK-NEXT: "begin": { 308 // CHECK-NEXT: "offset": 230, 309 // CHECK-NEXT: "col": 18, 310 // CHECK-NEXT: "tokLen": 1 311 // CHECK-NEXT: }, 312 // CHECK-NEXT: "end": { 313 // CHECK-NEXT: "offset": 231, 314 // CHECK-NEXT: "col": 19, 315 // CHECK-NEXT: "tokLen": 1 316 // CHECK-NEXT: } 317 // CHECK-NEXT: } 318 // CHECK-NEXT: } 319 // CHECK-NEXT: ] 320 // CHECK-NEXT: } 321 // CHECK-NEXT: ] 322 // CHECK-NEXT: } 323