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