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 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: "type": { 90 // CHECK-NEXT: "qualType": "void ()" 91 // CHECK-NEXT: } 92 // CHECK-NEXT: } 93 // CHECK-NEXT: ] 94 // CHECK-NEXT: }, 95 // CHECK-NEXT: { 96 // CHECK-NEXT: "id": "0x{{.*}}", 97 // CHECK-NEXT: "kind": "FunctionDecl", 98 // CHECK-NEXT: "loc": { 99 // CHECK-NEXT: "offset": 167, 100 // CHECK-NEXT: "line": 8, 101 // CHECK-NEXT: "col": 10, 102 // CHECK-NEXT: "tokLen": 8 103 // CHECK-NEXT: }, 104 // CHECK-NEXT: "range": { 105 // CHECK-NEXT: "begin": { 106 // CHECK-NEXT: "offset": 158, 107 // CHECK-NEXT: "col": 1, 108 // CHECK-NEXT: "tokLen": 4 109 // CHECK-NEXT: }, 110 // CHECK-NEXT: "end": { 111 // CHECK-NEXT: "offset": 179, 112 // CHECK-NEXT: "col": 22, 113 // CHECK-NEXT: "tokLen": 1 114 // CHECK-NEXT: } 115 // CHECK-NEXT: }, 116 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}", 117 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 118 // CHECK-NEXT: "name": "Function", 119 // CHECK-NEXT: "type": { 120 // CHECK-NEXT: "qualType": "void ()" 121 // CHECK-NEXT: }, 122 // CHECK-NEXT: "inner": [ 123 // CHECK-NEXT: { 124 // CHECK-NEXT: "id": "0x{{.*}}", 125 // CHECK-NEXT: "kind": "CompoundStmt", 126 // CHECK-NEXT: "range": { 127 // CHECK-NEXT: "begin": { 128 // CHECK-NEXT: "offset": 178, 129 // CHECK-NEXT: "col": 21, 130 // CHECK-NEXT: "tokLen": 1 131 // CHECK-NEXT: }, 132 // CHECK-NEXT: "end": { 133 // CHECK-NEXT: "offset": 179, 134 // CHECK-NEXT: "col": 22, 135 // CHECK-NEXT: "tokLen": 1 136 // CHECK-NEXT: } 137 // CHECK-NEXT: } 138 // CHECK-NEXT: } 139 // CHECK-NEXT: ] 140 // CHECK-NEXT: }, 141 // CHECK-NEXT: { 142 // CHECK-NEXT: "id": "0x{{.*}}", 143 // CHECK-NEXT: "kind": "CXXRecordDecl", 144 // CHECK-NEXT: "loc": { 145 // CHECK-NEXT: "offset": 189, 146 // CHECK-NEXT: "line": 10, 147 // CHECK-NEXT: "col": 8, 148 // CHECK-NEXT: "tokLen": 1 149 // CHECK-NEXT: }, 150 // CHECK-NEXT: "range": { 151 // CHECK-NEXT: "begin": { 152 // CHECK-NEXT: "offset": 182, 153 // CHECK-NEXT: "col": 1, 154 // CHECK-NEXT: "tokLen": 6 155 // CHECK-NEXT: }, 156 // CHECK-NEXT: "end": { 157 // CHECK-NEXT: "offset": 210, 158 // CHECK-NEXT: "line": 12, 159 // CHECK-NEXT: "col": 1, 160 // CHECK-NEXT: "tokLen": 1 161 // CHECK-NEXT: } 162 // CHECK-NEXT: }, 163 // CHECK-NEXT: "name": "S", 164 // CHECK-NEXT: "tagUsed": "struct", 165 // CHECK-NEXT: "completeDefinition": true, 166 // CHECK-NEXT: "definitionData": { 167 // CHECK-NEXT: "canConstDefaultInit": true, 168 // CHECK-NEXT: "canPassInRegisters": true, 169 // CHECK-NEXT: "copyAssign": { 170 // CHECK-NEXT: "hasConstParam": true, 171 // CHECK-NEXT: "implicitHasConstParam": true, 172 // CHECK-NEXT: "needsImplicit": true, 173 // CHECK-NEXT: "trivial": true 174 // CHECK-NEXT: }, 175 // CHECK-NEXT: "copyCtor": { 176 // CHECK-NEXT: "hasConstParam": true, 177 // CHECK-NEXT: "implicitHasConstParam": true, 178 // CHECK-NEXT: "needsImplicit": true, 179 // CHECK-NEXT: "simple": true, 180 // CHECK-NEXT: "trivial": true 181 // CHECK-NEXT: }, 182 // CHECK-NEXT: "defaultCtor": { 183 // CHECK-NEXT: "defaultedIsConstexpr": true, 184 // CHECK-NEXT: "exists": true, 185 // CHECK-NEXT: "isConstexpr": true, 186 // CHECK-NEXT: "needsImplicit": true, 187 // CHECK-NEXT: "trivial": true 188 // CHECK-NEXT: }, 189 // CHECK-NEXT: "dtor": { 190 // CHECK-NEXT: "irrelevant": true, 191 // CHECK-NEXT: "needsImplicit": true, 192 // CHECK-NEXT: "simple": true, 193 // CHECK-NEXT: "trivial": true 194 // CHECK-NEXT: }, 195 // CHECK-NEXT: "hasConstexprNonCopyMoveConstructor": true, 196 // CHECK-NEXT: "isAggregate": true, 197 // CHECK-NEXT: "isEmpty": true, 198 // CHECK-NEXT: "isLiteral": true, 199 // CHECK-NEXT: "isPOD": true, 200 // CHECK-NEXT: "isStandardLayout": true, 201 // CHECK-NEXT: "isTrivial": true, 202 // CHECK-NEXT: "isTriviallyCopyable": true, 203 // CHECK-NEXT: "moveAssign": { 204 // CHECK-NEXT: "exists": true, 205 // CHECK-NEXT: "needsImplicit": true, 206 // CHECK-NEXT: "simple": true, 207 // CHECK-NEXT: "trivial": true 208 // CHECK-NEXT: }, 209 // CHECK-NEXT: "moveCtor": { 210 // CHECK-NEXT: "exists": true, 211 // CHECK-NEXT: "needsImplicit": true, 212 // CHECK-NEXT: "simple": true, 213 // CHECK-NEXT: "trivial": true 214 // CHECK-NEXT: } 215 // CHECK-NEXT: }, 216 // CHECK-NEXT: "inner": [ 217 // CHECK-NEXT: { 218 // CHECK-NEXT: "id": "0x{{.*}}", 219 // CHECK-NEXT: "kind": "CXXRecordDecl", 220 // CHECK-NEXT: "loc": { 221 // CHECK-NEXT: "offset": 189, 222 // CHECK-NEXT: "line": 10, 223 // CHECK-NEXT: "col": 8, 224 // CHECK-NEXT: "tokLen": 1 225 // CHECK-NEXT: }, 226 // CHECK-NEXT: "range": { 227 // CHECK-NEXT: "begin": { 228 // CHECK-NEXT: "offset": 182, 229 // CHECK-NEXT: "col": 1, 230 // CHECK-NEXT: "tokLen": 6 231 // CHECK-NEXT: }, 232 // CHECK-NEXT: "end": { 233 // CHECK-NEXT: "offset": 189, 234 // CHECK-NEXT: "col": 8, 235 // CHECK-NEXT: "tokLen": 1 236 // CHECK-NEXT: } 237 // CHECK-NEXT: }, 238 // CHECK-NEXT: "isImplicit": true, 239 // CHECK-NEXT: "name": "S", 240 // CHECK-NEXT: "tagUsed": "struct" 241 // CHECK-NEXT: }, 242 // CHECK-NEXT: { 243 // CHECK-NEXT: "id": "0x{{.*}}", 244 // CHECK-NEXT: "kind": "CXXMethodDecl", 245 // CHECK-NEXT: "loc": { 246 // CHECK-NEXT: "offset": 200, 247 // CHECK-NEXT: "line": 11, 248 // CHECK-NEXT: "col": 8, 249 // CHECK-NEXT: "tokLen": 6 250 // CHECK-NEXT: }, 251 // CHECK-NEXT: "range": { 252 // CHECK-NEXT: "begin": { 253 // CHECK-NEXT: "offset": 195, 254 // CHECK-NEXT: "col": 3, 255 // CHECK-NEXT: "tokLen": 4 256 // CHECK-NEXT: }, 257 // CHECK-NEXT: "end": { 258 // CHECK-NEXT: "offset": 207, 259 // CHECK-NEXT: "col": 15, 260 // CHECK-NEXT: "tokLen": 1 261 // CHECK-NEXT: } 262 // CHECK-NEXT: }, 263 // CHECK-NEXT: "name": "Method", 264 // CHECK-NEXT: "type": { 265 // CHECK-NEXT: "qualType": "void ()" 266 // CHECK-NEXT: } 267 // CHECK-NEXT: } 268 // CHECK-NEXT: ] 269 // CHECK-NEXT: }, 270 // CHECK-NEXT: { 271 // CHECK-NEXT: "id": "0x{{.*}}", 272 // CHECK-NEXT: "kind": "CXXMethodDecl", 273 // CHECK-NEXT: "loc": { 274 // CHECK-NEXT: "offset": 221, 275 // CHECK-NEXT: "line": 13, 276 // CHECK-NEXT: "col": 9, 277 // CHECK-NEXT: "tokLen": 6 278 // CHECK-NEXT: }, 279 // CHECK-NEXT: "range": { 280 // CHECK-NEXT: "begin": { 281 // CHECK-NEXT: "offset": 213, 282 // CHECK-NEXT: "col": 1, 283 // CHECK-NEXT: "tokLen": 4 284 // CHECK-NEXT: }, 285 // CHECK-NEXT: "end": { 286 // CHECK-NEXT: "offset": 231, 287 // CHECK-NEXT: "col": 19, 288 // CHECK-NEXT: "tokLen": 1 289 // CHECK-NEXT: } 290 // CHECK-NEXT: }, 291 // CHECK-NEXT: "parentDeclContextId": "0x{{.*}}", 292 // CHECK-NEXT: "previousDecl": "0x{{.*}}", 293 // CHECK-NEXT: "name": "Method", 294 // CHECK-NEXT: "type": { 295 // CHECK-NEXT: "qualType": "void ()" 296 // CHECK-NEXT: }, 297 // CHECK-NEXT: "inner": [ 298 // CHECK-NEXT: { 299 // CHECK-NEXT: "id": "0x{{.*}}", 300 // CHECK-NEXT: "kind": "CompoundStmt", 301 // CHECK-NEXT: "range": { 302 // CHECK-NEXT: "begin": { 303 // CHECK-NEXT: "offset": 230, 304 // CHECK-NEXT: "col": 18, 305 // CHECK-NEXT: "tokLen": 1 306 // CHECK-NEXT: }, 307 // CHECK-NEXT: "end": { 308 // CHECK-NEXT: "offset": 231, 309 // CHECK-NEXT: "col": 19, 310 // CHECK-NEXT: "tokLen": 1 311 // CHECK-NEXT: } 312 // CHECK-NEXT: } 313 // CHECK-NEXT: } 314 // CHECK-NEXT: ] 315 // CHECK-NEXT: } 316 // CHECK-NEXT: ] 317 // CHECK-NEXT: } 318