323 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json -ast-dump-filter Test %s | FileCheck %s2 3namespace Test {4 5namespace NS {6void Function();7}8void NS::Function() {}9 10struct S {11 void Method();12};13void S::Method() {}14 15} // namespace Test16 17// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py18 19// CHECK-NOT: {{^}}Dumping20// CHECK: "kind": "NamespaceDecl",21// CHECK-NEXT: "loc": {22// CHECK-NEXT: "offset": {{[0-9]+}},23// CHECK-NEXT: "file": "{{.*}}",24// CHECK-NEXT: "line": 3,25// CHECK-NEXT: "col": 11,26// CHECK-NEXT: "tokLen": 427// CHECK-NEXT: },28// CHECK-NEXT: "range": {29// CHECK-NEXT: "begin": {30// CHECK-NEXT: "offset": {{[0-9]+}},31// CHECK-NEXT: "col": 1,32// CHECK-NEXT: "tokLen": 933// CHECK-NEXT: },34// CHECK-NEXT: "end": {35// CHECK-NEXT: "offset": {{[0-9]+}},36// CHECK-NEXT: "line": 15,37// CHECK-NEXT: "col": 1,38// CHECK-NEXT: "tokLen": 139// 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": {{[0-9]+}},48// CHECK-NEXT: "line": 5,49// CHECK-NEXT: "col": 11,50// CHECK-NEXT: "tokLen": 251// CHECK-NEXT: },52// CHECK-NEXT: "range": {53// CHECK-NEXT: "begin": {54// CHECK-NEXT: "offset": {{[0-9]+}},55// CHECK-NEXT: "col": 1,56// CHECK-NEXT: "tokLen": 957// CHECK-NEXT: },58// CHECK-NEXT: "end": {59// CHECK-NEXT: "offset": {{[0-9]+}},60// CHECK-NEXT: "line": 7,61// CHECK-NEXT: "col": 1,62// CHECK-NEXT: "tokLen": 163// 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": {{[0-9]+}},72// CHECK-NEXT: "line": 6,73// CHECK-NEXT: "col": 6,74// CHECK-NEXT: "tokLen": 875// CHECK-NEXT: },76// CHECK-NEXT: "range": {77// CHECK-NEXT: "begin": {78// CHECK-NEXT: "offset": {{[0-9]+}},79// CHECK-NEXT: "col": 1,80// CHECK-NEXT: "tokLen": 481// CHECK-NEXT: },82// CHECK-NEXT: "end": {83// CHECK-NEXT: "offset": {{[0-9]+}},84// CHECK-NEXT: "col": 15,85// CHECK-NEXT: "tokLen": 186// 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": {{[0-9]+}},101// CHECK-NEXT: "line": 8,102// CHECK-NEXT: "col": 10,103// CHECK-NEXT: "tokLen": 8104// CHECK-NEXT: },105// CHECK-NEXT: "range": {106// CHECK-NEXT: "begin": {107// CHECK-NEXT: "offset": {{[0-9]+}},108// CHECK-NEXT: "col": 1,109// CHECK-NEXT: "tokLen": 4110// CHECK-NEXT: },111// CHECK-NEXT: "end": {112// CHECK-NEXT: "offset": {{[0-9]+}},113// CHECK-NEXT: "col": 22,114// CHECK-NEXT: "tokLen": 1115// 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": {{[0-9]+}},131// CHECK-NEXT: "col": 21,132// CHECK-NEXT: "tokLen": 1133// CHECK-NEXT: },134// CHECK-NEXT: "end": {135// CHECK-NEXT: "offset": {{[0-9]+}},136// CHECK-NEXT: "col": 22,137// CHECK-NEXT: "tokLen": 1138// 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": {{[0-9]+}},148// CHECK-NEXT: "line": 10,149// CHECK-NEXT: "col": 8,150// CHECK-NEXT: "tokLen": 1151// CHECK-NEXT: },152// CHECK-NEXT: "range": {153// CHECK-NEXT: "begin": {154// CHECK-NEXT: "offset": {{[0-9]+}},155// CHECK-NEXT: "col": 1,156// CHECK-NEXT: "tokLen": 6157// CHECK-NEXT: },158// CHECK-NEXT: "end": {159// CHECK-NEXT: "offset": {{[0-9]+}},160// CHECK-NEXT: "line": 12,161// CHECK-NEXT: "col": 1,162// CHECK-NEXT: "tokLen": 1163// 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": true177// 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": true184// 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": true191// 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": true197// 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": true211// 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": true217// 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": {{[0-9]+}},225// CHECK-NEXT: "line": 10,226// CHECK-NEXT: "col": 8,227// CHECK-NEXT: "tokLen": 1228// CHECK-NEXT: },229// CHECK-NEXT: "range": {230// CHECK-NEXT: "begin": {231// CHECK-NEXT: "offset": {{[0-9]+}},232// CHECK-NEXT: "col": 1,233// CHECK-NEXT: "tokLen": 6234// CHECK-NEXT: },235// CHECK-NEXT: "end": {236// CHECK-NEXT: "offset": {{[0-9]+}},237// CHECK-NEXT: "col": 8,238// CHECK-NEXT: "tokLen": 1239// 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": {{[0-9]+}},250// CHECK-NEXT: "line": 11,251// CHECK-NEXT: "col": 8,252// CHECK-NEXT: "tokLen": 6253// CHECK-NEXT: },254// CHECK-NEXT: "range": {255// CHECK-NEXT: "begin": {256// CHECK-NEXT: "offset": {{[0-9]+}},257// CHECK-NEXT: "col": 3,258// CHECK-NEXT: "tokLen": 4259// CHECK-NEXT: },260// CHECK-NEXT: "end": {261// CHECK-NEXT: "offset": {{[0-9]+}},262// CHECK-NEXT: "col": 15,263// CHECK-NEXT: "tokLen": 1264// 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": {{[0-9]+}},279// CHECK-NEXT: "line": 13,280// CHECK-NEXT: "col": 9,281// CHECK-NEXT: "tokLen": 6282// CHECK-NEXT: },283// CHECK-NEXT: "range": {284// CHECK-NEXT: "begin": {285// CHECK-NEXT: "offset": {{[0-9]+}},286// CHECK-NEXT: "col": 1,287// CHECK-NEXT: "tokLen": 4288// CHECK-NEXT: },289// CHECK-NEXT: "end": {290// CHECK-NEXT: "offset": {{[0-9]+}},291// CHECK-NEXT: "col": 19,292// CHECK-NEXT: "tokLen": 1293// 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": {{[0-9]+}},309// CHECK-NEXT: "col": 18,310// CHECK-NEXT: "tokLen": 1311// CHECK-NEXT: },312// CHECK-NEXT: "end": {313// CHECK-NEXT: "offset": {{[0-9]+}},314// CHECK-NEXT: "col": 19,315// CHECK-NEXT: "tokLen": 1316// CHECK-NEXT: }317// CHECK-NEXT: }318// CHECK-NEXT: }319// CHECK-NEXT: ]320// CHECK-NEXT: }321// CHECK-NEXT: ]322// CHECK-NEXT: }323