brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.8 KiB · aac6027 Raw
560 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -ast-dump=json -ast-dump-filter Test %s | FileCheck %s2 3namespace NS {4struct S {};5}6 7struct T {8  int I;9  void F();10};11 12typedef struct T TestElaboratedType1;13typedef NS::S TestElaboratedType2;14 15#define CDECL __attribute__((cdecl))16typedef void (CDECL *TestMacroQualifiedType)();17 18typedef void (T::* TestMemberFunctionPointerType)();19typedef int T::*TestMemberDataPointerType;20 21typedef int TestQualTypePrinting(const char* c);22 23typedef int TestUsingShadowDeclType;24namespace TestNamespaceWithUsingShadowType {25using ::TestUsingShadowDeclType;26}27 28// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py29 30 31// CHECK-NOT: {{^}}Dumping32// CHECK:  "kind": "TypedefDecl",33// CHECK-NEXT:  "loc": {34// CHECK-NEXT:   "offset": 204,35// CHECK-NEXT:   "file": "{{.*}}",36// CHECK-NEXT:   "line": 12,37// CHECK-NEXT:   "col": 18,38// CHECK-NEXT:   "tokLen": 1939// CHECK-NEXT:  },40// CHECK-NEXT:  "range": {41// CHECK-NEXT:   "begin": {42// CHECK-NEXT:    "offset": 187,43// CHECK-NEXT:    "col": 1,44// CHECK-NEXT:    "tokLen": 745// CHECK-NEXT:   },46// CHECK-NEXT:   "end": {47// CHECK-NEXT:    "offset": 204,48// CHECK-NEXT:    "col": 18,49// CHECK-NEXT:    "tokLen": 1950// CHECK-NEXT:   }51// CHECK-NEXT:  },52// CHECK-NEXT:  "name": "TestElaboratedType1",53// CHECK-NEXT:  "type": {54// CHECK-NEXT:   "qualType": "struct T"55// CHECK-NEXT:  },56// CHECK-NEXT:  "inner": [57// CHECK-NEXT:   {58// CHECK-NEXT:    "id": "0x{{.*}}",59// CHECK-NEXT:    "kind": "RecordType",60// CHECK-NEXT:    "type": {61// CHECK-NEXT:     "qualType": "struct T"62// CHECK-NEXT:    },63// CHECK-NEXT:    "decl": {64// CHECK-NEXT:     "id": "0x{{.*}}",65// CHECK-NEXT:     "kind": "CXXRecordDecl",66// CHECK-NEXT:     "name": "T"67// CHECK-NEXT:    }68// CHECK-NEXT:   }69// CHECK-NEXT:  ]70// CHECK-NEXT: }71 72 73// CHECK-NOT: {{^}}Dumping74// CHECK:  "kind": "TypedefDecl",75// CHECK-NEXT:  "loc": {76// CHECK-NEXT:   "offset": 239,77// CHECK-NEXT:   "file": "{{.*}}",78// CHECK-NEXT:   "line": 13,79// CHECK-NEXT:   "col": 15,80// CHECK-NEXT:   "tokLen": 1981// CHECK-NEXT:  },82// CHECK-NEXT:  "range": {83// CHECK-NEXT:   "begin": {84// CHECK-NEXT:    "offset": 225,85// CHECK-NEXT:    "col": 1,86// CHECK-NEXT:    "tokLen": 787// CHECK-NEXT:   },88// CHECK-NEXT:   "end": {89// CHECK-NEXT:    "offset": 239,90// CHECK-NEXT:    "col": 15,91// CHECK-NEXT:    "tokLen": 1992// CHECK-NEXT:   }93// CHECK-NEXT:  },94// CHECK-NEXT:  "name": "TestElaboratedType2",95// CHECK-NEXT:  "type": {96// CHECK-NEXT:   "qualType": "NS::S"97// CHECK-NEXT:  },98// CHECK-NEXT:  "inner": [99// CHECK-NEXT:   {100// CHECK-NEXT:    "id": "0x{{.*}}",101// CHECK-NEXT:    "kind": "RecordType",102// CHECK-NEXT:    "type": {103// CHECK-NEXT:     "qualType": "NS::S"104// CHECK-NEXT:    },105// CHECK-NEXT:    "qualifier": "NS::",106// CHECK-NEXT:    "decl": {107// CHECK-NEXT:     "id": "0x{{.*}}",108// CHECK-NEXT:     "kind": "CXXRecordDecl",109// CHECK-NEXT:     "name": "S"110// CHECK-NEXT:    }111// CHECK-NEXT:   }112// CHECK-NEXT:  ]113// CHECK-NEXT: }114 115 116// CHECK-NOT: {{^}}Dumping117// CHECK:  "kind": "TypedefDecl",118// CHECK-NEXT:  "loc": {119// CHECK-NEXT:   "offset": 319,120// CHECK-NEXT:   "file": "{{.*}}",121// CHECK-NEXT:   "line": 16,122// CHECK-NEXT:   "col": 22,123// CHECK-NEXT:   "tokLen": 22124// CHECK-NEXT:  },125// CHECK-NEXT:  "range": {126// CHECK-NEXT:   "begin": {127// CHECK-NEXT:    "offset": 298,128// CHECK-NEXT:    "col": 1,129// CHECK-NEXT:    "tokLen": 7130// CHECK-NEXT:   },131// CHECK-NEXT:   "end": {132// CHECK-NEXT:    "offset": 319,133// CHECK-NEXT:    "col": 22,134// CHECK-NEXT:    "tokLen": 22135// CHECK-NEXT:   }136// CHECK-NEXT:  },137// CHECK-NEXT:  "name": "TestMacroQualifiedType",138// CHECK-NEXT:  "type": {139// CHECK-NEXT:   "qualType": "CDECL void (*)()"140// CHECK-NEXT:  },141// CHECK-NEXT:  "inner": [142// CHECK-NEXT:   {143// CHECK-NEXT:    "id": "0x{{.*}}",144// CHECK-NEXT:    "kind": "PointerType",145// CHECK-NEXT:    "type": {146// CHECK-NEXT:     "qualType": "CDECL void (*)()"147// CHECK-NEXT:    },148// CHECK-NEXT:    "inner": [149// CHECK-NEXT:     {150// CHECK-NEXT:      "id": "0x{{.*}}",151// CHECK-NEXT:      "kind": "MacroQualifiedType",152// CHECK-NEXT:      "type": {153// CHECK-NEXT:       "qualType": "CDECL void ()"154// CHECK-NEXT:      },155// CHECK-NEXT:      "macroName": "CDECL",156// CHECK-NEXT:      "inner": [157// CHECK-NEXT:       {158// CHECK-NEXT:        "id": "0x{{.*}}",159// CHECK-NEXT:        "kind": "AttributedType",160// CHECK-NEXT:        "type": {161// CHECK-NEXT:         "qualType": "void () __attribute__((cdecl))"162// CHECK-NEXT:        },163// CHECK-NEXT:        "inner": [164// CHECK-NEXT:         {165// CHECK-NEXT:          "id": "0x{{.*}}",166// CHECK-NEXT:          "kind": "ParenType",167// CHECK-NEXT:          "type": {168// CHECK-NEXT:           "qualType": "void ()"169// CHECK-NEXT:          },170// CHECK-NEXT:          "inner": [171// CHECK-NEXT:           {172// CHECK-NEXT:            "id": "0x{{.*}}",173// CHECK-NEXT:            "kind": "FunctionProtoType",174// CHECK-NEXT:            "type": {175// CHECK-NEXT:             "qualType": "void ()"176// CHECK-NEXT:            },177// CHECK-NEXT:            "cc": "cdecl",178// CHECK-NEXT:            "inner": [179// CHECK-NEXT:             {180// CHECK-NEXT:              "id": "0x{{.*}}",181// CHECK-NEXT:              "kind": "BuiltinType",182// CHECK-NEXT:              "type": {183// CHECK-NEXT:               "qualType": "void"184// CHECK-NEXT:              }185// CHECK-NEXT:             }186// CHECK-NEXT:            ]187// CHECK-NEXT:           }188// CHECK-NEXT:          ]189// CHECK-NEXT:         }190// CHECK-NEXT:        ]191// CHECK-NEXT:       }192// CHECK-NEXT:      ]193// CHECK-NEXT:     }194// CHECK-NEXT:    ]195// CHECK-NEXT:   }196// CHECK-NEXT:  ]197// CHECK-NEXT: }198 199 200// CHECK-NOT: {{^}}Dumping201// CHECK:  "kind": "TypedefDecl",202// CHECK-NEXT:  "loc": {203// CHECK-NEXT:   "offset": 366,204// CHECK-NEXT:   "file": "{{.*}}",205// CHECK-NEXT:   "line": 18,206// CHECK-NEXT:   "col": 20,207// CHECK-NEXT:   "tokLen": 29208// CHECK-NEXT:  },209// CHECK-NEXT:  "range": {210// CHECK-NEXT:   "begin": {211// CHECK-NEXT:    "offset": 347,212// CHECK-NEXT:    "col": 1,213// CHECK-NEXT:    "tokLen": 7214// CHECK-NEXT:   },215// CHECK-NEXT:   "end": {216// CHECK-NEXT:    "offset": 397,217// CHECK-NEXT:    "col": 51,218// CHECK-NEXT:    "tokLen": 1219// CHECK-NEXT:   }220// CHECK-NEXT:  },221// CHECK-NEXT:  "name": "TestMemberFunctionPointerType",222// CHECK-NEXT:  "type": {223// CHECK-NEXT:   "qualType": "void (T::*)()"224// CHECK-NEXT:  },225// CHECK-NEXT:  "inner": [226// CHECK-NEXT:   {227// CHECK-NEXT:    "id": "0x{{.*}}",228// CHECK-NEXT:    "kind": "MemberPointerType",229// CHECK-NEXT:    "type": {230// CHECK-NEXT:     "qualType": "void (T::*)()"231// CHECK-NEXT:    },232// CHECK-NEXT:    "isFunction": true,233// CHECK-NEXT:    "inner": [234// CHECK-NEXT:     {235// CHECK-NEXT:      "id": "0x{{.*}}",236// CHECK-NEXT:      "kind": "RecordType",237// CHECK-NEXT:      "type": {238// CHECK-NEXT:       "qualType": "T"239// CHECK-NEXT:      },240// CHECK-NEXT:      "decl": {241// CHECK-NEXT:       "id": "0x{{.*}}",242// CHECK-NEXT:       "kind": "CXXRecordDecl",243// CHECK-NEXT:       "name": "T"244// CHECK-NEXT:      }245// CHECK-NEXT:     },246// CHECK-NEXT:     {247// CHECK-NEXT:      "id": "0x{{.*}}",248// CHECK-NEXT:      "kind": "ParenType",249// CHECK-NEXT:      "type": {250// CHECK-NEXT:       "qualType": "void ()"251// CHECK-NEXT:      },252// CHECK-NEXT:      "inner": [253// CHECK-NEXT:       {254// CHECK-NEXT:        "id": "0x{{.*}}",255// CHECK-NEXT:        "kind": "FunctionProtoType",256// CHECK-NEXT:        "type": {257// CHECK-NEXT:         "qualType": "void ()"258// CHECK-NEXT:        },259// CHECK-NEXT:        "cc": "cdecl",260// CHECK-NEXT:        "inner": [261// CHECK-NEXT:         {262// CHECK-NEXT:          "id": "0x{{.*}}",263// CHECK-NEXT:          "kind": "BuiltinType",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:     }272// CHECK-NEXT:    ]273// CHECK-NEXT:   }274// CHECK-NEXT:  ]275// CHECK-NEXT: }276 277 278// CHECK-NOT: {{^}}Dumping279// CHECK:  "kind": "TypedefDecl",280// CHECK-NEXT:  "loc": {281// CHECK-NEXT:   "offset": 416,282// CHECK-NEXT:   "file": "{{.*}}",283// CHECK-NEXT:   "line": 19,284// CHECK-NEXT:   "col": 17,285// CHECK-NEXT:   "tokLen": 25286// CHECK-NEXT:  },287// CHECK-NEXT:  "range": {288// CHECK-NEXT:   "begin": {289// CHECK-NEXT:    "offset": 400,290// CHECK-NEXT:    "col": 1,291// CHECK-NEXT:    "tokLen": 7292// CHECK-NEXT:   },293// CHECK-NEXT:   "end": {294// CHECK-NEXT:    "offset": 416,295// CHECK-NEXT:    "col": 17,296// CHECK-NEXT:    "tokLen": 25297// CHECK-NEXT:   }298// CHECK-NEXT:  },299// CHECK-NEXT:  "name": "TestMemberDataPointerType",300// CHECK-NEXT:  "type": {301// CHECK-NEXT:   "qualType": "int T::*"302// CHECK-NEXT:  },303// CHECK-NEXT:  "inner": [304// CHECK-NEXT:   {305// CHECK-NEXT:    "id": "0x{{.*}}",306// CHECK-NEXT:    "kind": "MemberPointerType",307// CHECK-NEXT:    "type": {308// CHECK-NEXT:     "qualType": "int T::*"309// CHECK-NEXT:    },310// CHECK-NEXT:    "isData": true,311// CHECK-NEXT:    "inner": [312// CHECK-NEXT:     {313// CHECK-NEXT:      "id": "0x{{.*}}",314// CHECK-NEXT:      "kind": "RecordType",315// CHECK-NEXT:      "type": {316// CHECK-NEXT:       "qualType": "T"317// CHECK-NEXT:      },318// CHECK-NEXT:      "decl": {319// CHECK-NEXT:       "id": "0x{{.*}}",320// CHECK-NEXT:       "kind": "CXXRecordDecl",321// CHECK-NEXT:       "name": "T"322// CHECK-NEXT:      }323// CHECK-NEXT:     },324// CHECK-NEXT:     {325// CHECK-NEXT:      "id": "0x{{.*}}",326// CHECK-NEXT:      "kind": "BuiltinType",327// CHECK-NEXT:      "type": {328// CHECK-NEXT:       "qualType": "int"329// CHECK-NEXT:      }330// CHECK-NEXT:     }331// CHECK-NEXT:    ]332// CHECK-NEXT:   }333// CHECK-NEXT:  ]334// CHECK-NEXT: }335 336 337// CHECK-NOT: {{^}}Dumping338// CHECK:  "kind": "TypedefDecl",339// CHECK-NEXT:  "loc": {340// CHECK-NEXT:   "offset": 456,341// CHECK-NEXT:   "file": "{{.*}}",342// CHECK-NEXT:   "line": 21,343// CHECK-NEXT:   "col": 13,344// CHECK-NEXT:   "tokLen": 20345// CHECK-NEXT:  },346// CHECK-NEXT:  "range": {347// CHECK-NEXT:   "begin": {348// CHECK-NEXT:    "offset": 444,349// CHECK-NEXT:    "col": 1,350// CHECK-NEXT:    "tokLen": 7351// CHECK-NEXT:   },352// CHECK-NEXT:   "end": {353// CHECK-NEXT:    "offset": 490,354// CHECK-NEXT:    "col": 47,355// CHECK-NEXT:    "tokLen": 1356// CHECK-NEXT:   }357// CHECK-NEXT:  },358// CHECK-NEXT:  "name": "TestQualTypePrinting",359// CHECK-NEXT:  "type": {360// CHECK-NEXT:   "qualType": "int (const char *)"361// CHECK-NEXT:  },362// CHECK-NEXT:  "inner": [363// CHECK-NEXT:   {364// CHECK-NEXT:    "id": "0x{{.*}}",365// CHECK-NEXT:    "kind": "FunctionProtoType",366// CHECK-NEXT:    "type": {367// CHECK-NEXT:     "qualType": "int (const char *)"368// CHECK-NEXT:    },369// CHECK-NEXT:    "cc": "cdecl",370// CHECK-NEXT:    "inner": [371// CHECK-NEXT:     {372// CHECK-NEXT:      "id": "0x{{.*}}",373// CHECK-NEXT:      "kind": "BuiltinType",374// CHECK-NEXT:      "type": {375// CHECK-NEXT:       "qualType": "int"376// CHECK-NEXT:      }377// CHECK-NEXT:     },378// CHECK-NEXT:     {379// CHECK-NEXT:      "id": "0x{{.*}}",380// CHECK-NEXT:      "kind": "PointerType",381// CHECK-NEXT:      "type": {382// CHECK-NEXT:       "qualType": "const char *"383// CHECK-NEXT:      },384// CHECK-NEXT:      "inner": [385// CHECK-NEXT:       {386// CHECK-NEXT:        "id": "0x{{.*}}",387// CHECK-NEXT:        "kind": "QualType",388// CHECK-NEXT:        "type": {389// CHECK-NEXT:         "qualType": "const char"390// CHECK-NEXT:        },391// CHECK-NEXT:        "qualifiers": "const",392// CHECK-NEXT:        "inner": [393// CHECK-NEXT:         {394// CHECK-NEXT:          "id": "0x{{.*}}",395// CHECK-NEXT:          "kind": "BuiltinType",396// CHECK-NEXT:          "type": {397// CHECK-NEXT:           "qualType": "char"398// CHECK-NEXT:          }399// CHECK-NEXT:         }400// CHECK-NEXT:        ]401// CHECK-NEXT:       }402// CHECK-NEXT:      ]403// CHECK-NEXT:     }404// CHECK-NEXT:    ]405// CHECK-NEXT:   }406// CHECK-NEXT:  ]407// CHECK-NEXT: }408 409 410// CHECK-NOT: {{^}}Dumping411// CHECK:  "kind": "TypedefDecl",412// CHECK-NEXT:  "loc": {413// CHECK-NEXT:   "offset": 506,414// CHECK-NEXT:   "file": "{{.*}}",415// CHECK-NEXT:   "line": 23,416// CHECK-NEXT:   "col": 13,417// CHECK-NEXT:   "tokLen": 23418// CHECK-NEXT:  },419// CHECK-NEXT:  "range": {420// CHECK-NEXT:   "begin": {421// CHECK-NEXT:    "offset": 494,422// CHECK-NEXT:    "col": 1,423// CHECK-NEXT:    "tokLen": 7424// CHECK-NEXT:   },425// CHECK-NEXT:   "end": {426// CHECK-NEXT:    "offset": 506,427// CHECK-NEXT:    "col": 13,428// CHECK-NEXT:    "tokLen": 23429// CHECK-NEXT:   }430// CHECK-NEXT:  },431// CHECK-NEXT:  "name": "TestUsingShadowDeclType",432// CHECK-NEXT:  "type": {433// CHECK-NEXT:   "qualType": "int"434// CHECK-NEXT:  },435// CHECK-NEXT:  "inner": [436// CHECK-NEXT:   {437// CHECK-NEXT:    "id": "0x{{.*}}",438// CHECK-NEXT:    "kind": "BuiltinType",439// CHECK-NEXT:    "type": {440// CHECK-NEXT:     "qualType": "int"441// CHECK-NEXT:    }442// CHECK-NEXT:   }443// CHECK-NEXT:  ]444// CHECK-NEXT: }445 446 447// CHECK-NOT: {{^}}Dumping448// CHECK:  "kind": "NamespaceDecl",449// CHECK-NEXT:  "loc": {450// CHECK-NEXT:   "offset": 541,451// CHECK-NEXT:   "file": "{{.*}}",452// CHECK-NEXT:   "line": 24,453// CHECK-NEXT:   "col": 11,454// CHECK-NEXT:   "tokLen": 32455// CHECK-NEXT:  },456// CHECK-NEXT:  "range": {457// CHECK-NEXT:   "begin": {458// CHECK-NEXT:    "offset": 531,459// CHECK-NEXT:    "col": 1,460// CHECK-NEXT:    "tokLen": 9461// CHECK-NEXT:   },462// CHECK-NEXT:   "end": {463// CHECK-NEXT:    "offset": 609,464// CHECK-NEXT:    "line": 26,465// CHECK-NEXT:    "col": 1,466// CHECK-NEXT:    "tokLen": 1467// CHECK-NEXT:   }468// CHECK-NEXT:  },469// CHECK-NEXT:  "name": "TestNamespaceWithUsingShadowType",470// CHECK-NEXT:  "inner": [471// CHECK-NEXT:   {472// CHECK-NEXT:    "id": "0x{{.*}}",473// CHECK-NEXT:    "kind": "UsingDecl",474// CHECK-NEXT:    "loc": {475// CHECK-NEXT:     "offset": 584,476// CHECK-NEXT:     "line": 25,477// CHECK-NEXT:     "col": 9,478// CHECK-NEXT:     "tokLen": 23479// CHECK-NEXT:    },480// CHECK-NEXT:    "range": {481// CHECK-NEXT:     "begin": {482// CHECK-NEXT:      "offset": 576,483// CHECK-NEXT:      "col": 1,484// CHECK-NEXT:      "tokLen": 5485// CHECK-NEXT:     },486// CHECK-NEXT:     "end": {487// CHECK-NEXT:      "offset": 584,488// CHECK-NEXT:      "col": 9,489// CHECK-NEXT:      "tokLen": 23490// CHECK-NEXT:     }491// CHECK-NEXT:    },492// CHECK-NEXT:    "name": "::TestUsingShadowDeclType"493// CHECK-NEXT:   },494// CHECK-NEXT:   {495// CHECK-NEXT:    "id": "0x{{.*}}",496// CHECK-NEXT:    "kind": "UsingShadowDecl",497// CHECK-NEXT:    "loc": {498// CHECK-NEXT:     "offset": 584,499// CHECK-NEXT:     "col": 9,500// CHECK-NEXT:     "tokLen": 23501// CHECK-NEXT:    },502// CHECK-NEXT:    "range": {503// CHECK-NEXT:     "begin": {504// CHECK-NEXT:      "offset": 584,505// CHECK-NEXT:      "col": 9,506// CHECK-NEXT:      "tokLen": 23507// CHECK-NEXT:     },508// CHECK-NEXT:     "end": {509// CHECK-NEXT:      "offset": 584,510// CHECK-NEXT:      "col": 9,511// CHECK-NEXT:      "tokLen": 23512// CHECK-NEXT:     }513// CHECK-NEXT:    },514// CHECK-NEXT:    "isImplicit": true,515// CHECK-NEXT:    "target": {516// CHECK-NEXT:     "id": "0x{{.*}}",517// CHECK-NEXT:     "kind": "TypedefDecl",518// CHECK-NEXT:     "name": "TestUsingShadowDeclType"519// CHECK-NEXT:    },520// CHECK-NEXT:    "inner": [521// CHECK-NEXT:     {522// CHECK-NEXT:      "id": "0x{{.*}}",523// CHECK-NEXT:      "kind": "TypedefDecl",524// CHECK-NEXT:      "loc": {525// CHECK-NEXT:       "offset": 506,526// CHECK-NEXT:       "line": 23,527// CHECK-NEXT:       "col": 13,528// CHECK-NEXT:       "tokLen": 23529// CHECK-NEXT:      },530// CHECK-NEXT:      "range": {531// CHECK-NEXT:       "begin": {532// CHECK-NEXT:        "offset": 494,533// CHECK-NEXT:        "col": 1,534// CHECK-NEXT:        "tokLen": 7535// CHECK-NEXT:       },536// CHECK-NEXT:       "end": {537// CHECK-NEXT:        "offset": 506,538// CHECK-NEXT:        "col": 13,539// CHECK-NEXT:        "tokLen": 23540// CHECK-NEXT:       }541// CHECK-NEXT:      },542// CHECK-NEXT:      "name": "TestUsingShadowDeclType",543// CHECK-NEXT:      "type": {544// CHECK-NEXT:       "qualType": "int"545// CHECK-NEXT:      },546// CHECK-NEXT:      "inner": [547// CHECK-NEXT:       {548// CHECK-NEXT:        "id": "0x{{.*}}",549// CHECK-NEXT:        "kind": "BuiltinType",550// CHECK-NEXT:        "type": {551// CHECK-NEXT:         "qualType": "int"552// CHECK-NEXT:        }553// CHECK-NEXT:       }554// CHECK-NEXT:      ]555// CHECK-NEXT:     }556// CHECK-NEXT:    ]557// CHECK-NEXT:   }558// CHECK-NEXT:  ]559// CHECK-NEXT: }560