518 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-pc-linux -std=c++17 -ast-dump=json %s | FileCheck %s2 3enum {4 One,5 Two6};7 8enum E {9 Three,10 Four11};12 13enum F : short {14 Five,15 Six16};17 18enum struct G {19 Seven,20 Eight21};22 23enum class H {24 Nine,25 Ten26};27 28enum class I : int {29 Eleven,30 Twelve31};32 33// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py34// using --filters=EnumDecl35 36// CHECK-NOT: {{^}}Dumping37// CHECK: "kind": "EnumDecl",38// CHECK-NEXT: "loc": {39// CHECK-NEXT: "offset": {{[0-9]+}},40// CHECK-NEXT: "file": "{{.*}}",41// CHECK-NEXT: "line": 3,42// CHECK-NEXT: "col": 1,43// CHECK-NEXT: "tokLen": 444// CHECK-NEXT: },45// CHECK-NEXT: "range": {46// CHECK-NEXT: "begin": {47// CHECK-NEXT: "offset": {{[0-9]+}},48// CHECK-NEXT: "col": 1,49// CHECK-NEXT: "tokLen": 450// CHECK-NEXT: },51// CHECK-NEXT: "end": {52// CHECK-NEXT: "offset": {{[0-9]+}},53// CHECK-NEXT: "line": 6,54// CHECK-NEXT: "col": 1,55// CHECK-NEXT: "tokLen": 156// CHECK-NEXT: }57// CHECK-NEXT: },58// CHECK-NEXT: "inner": [59// CHECK-NEXT: {60// CHECK-NEXT: "id": "0x{{.*}}",61// CHECK-NEXT: "kind": "EnumConstantDecl",62// CHECK-NEXT: "loc": {63// CHECK-NEXT: "offset": {{[0-9]+}},64// CHECK-NEXT: "line": 4,65// CHECK-NEXT: "col": 3,66// CHECK-NEXT: "tokLen": 367// CHECK-NEXT: },68// CHECK-NEXT: "range": {69// CHECK-NEXT: "begin": {70// CHECK-NEXT: "offset": {{[0-9]+}},71// CHECK-NEXT: "col": 3,72// CHECK-NEXT: "tokLen": 373// CHECK-NEXT: },74// CHECK-NEXT: "end": {75// CHECK-NEXT: "offset": {{[0-9]+}},76// CHECK-NEXT: "col": 3,77// CHECK-NEXT: "tokLen": 378// CHECK-NEXT: }79// CHECK-NEXT: },80// CHECK-NEXT: "name": "One",81// CHECK-NEXT: "type": {82// CHECK-NEXT: "qualType": "(unnamed enum at {{.*}}:3:1)"83// CHECK-NEXT: }84// CHECK-NEXT: },85// CHECK-NEXT: {86// CHECK-NEXT: "id": "0x{{.*}}",87// CHECK-NEXT: "kind": "EnumConstantDecl",88// CHECK-NEXT: "loc": {89// CHECK-NEXT: "offset": {{[0-9]+}},90// CHECK-NEXT: "line": 5,91// CHECK-NEXT: "col": 3,92// CHECK-NEXT: "tokLen": 393// CHECK-NEXT: },94// CHECK-NEXT: "range": {95// CHECK-NEXT: "begin": {96// CHECK-NEXT: "offset": {{[0-9]+}},97// CHECK-NEXT: "col": 3,98// CHECK-NEXT: "tokLen": 399// CHECK-NEXT: },100// CHECK-NEXT: "end": {101// CHECK-NEXT: "offset": {{[0-9]+}},102// CHECK-NEXT: "col": 3,103// CHECK-NEXT: "tokLen": 3104// CHECK-NEXT: }105// CHECK-NEXT: },106// CHECK-NEXT: "name": "Two",107// CHECK-NEXT: "type": {108// CHECK-NEXT: "qualType": "(unnamed enum at {{.*}}:3:1)"109// CHECK-NEXT: }110// CHECK-NEXT: }111// CHECK-NEXT: ]112// CHECK-NEXT: }113 114// CHECK-NOT: {{^}}Dumping115// CHECK: "kind": "EnumDecl",116// CHECK-NEXT: "loc": {117// CHECK-NEXT: "offset": {{[0-9]+}},118// CHECK-NEXT: "line": 8,119// CHECK-NEXT: "col": 6,120// CHECK-NEXT: "tokLen": 1121// CHECK-NEXT: },122// CHECK-NEXT: "range": {123// CHECK-NEXT: "begin": {124// CHECK-NEXT: "offset": {{[0-9]+}},125// CHECK-NEXT: "col": 1,126// CHECK-NEXT: "tokLen": 4127// CHECK-NEXT: },128// CHECK-NEXT: "end": {129// CHECK-NEXT: "offset": {{[0-9]+}},130// CHECK-NEXT: "line": 11,131// CHECK-NEXT: "col": 1,132// CHECK-NEXT: "tokLen": 1133// CHECK-NEXT: }134// CHECK-NEXT: },135// CHECK-NEXT: "name": "E",136// CHECK-NEXT: "inner": [137// CHECK-NEXT: {138// CHECK-NEXT: "id": "0x{{.*}}",139// CHECK-NEXT: "kind": "EnumConstantDecl",140// CHECK-NEXT: "loc": {141// CHECK-NEXT: "offset": {{[0-9]+}},142// CHECK-NEXT: "line": 9,143// CHECK-NEXT: "col": 3,144// CHECK-NEXT: "tokLen": 5145// CHECK-NEXT: },146// CHECK-NEXT: "range": {147// CHECK-NEXT: "begin": {148// CHECK-NEXT: "offset": {{[0-9]+}},149// CHECK-NEXT: "col": 3,150// CHECK-NEXT: "tokLen": 5151// CHECK-NEXT: },152// CHECK-NEXT: "end": {153// CHECK-NEXT: "offset": {{[0-9]+}},154// CHECK-NEXT: "col": 3,155// CHECK-NEXT: "tokLen": 5156// CHECK-NEXT: }157// CHECK-NEXT: },158// CHECK-NEXT: "name": "Three",159// CHECK-NEXT: "type": {160// CHECK-NEXT: "qualType": "E"161// CHECK-NEXT: }162// CHECK-NEXT: },163// CHECK-NEXT: {164// CHECK-NEXT: "id": "0x{{.*}}",165// CHECK-NEXT: "kind": "EnumConstantDecl",166// CHECK-NEXT: "loc": {167// CHECK-NEXT: "offset": {{[0-9]+}},168// CHECK-NEXT: "line": 10,169// CHECK-NEXT: "col": 3,170// CHECK-NEXT: "tokLen": 4171// CHECK-NEXT: },172// CHECK-NEXT: "range": {173// CHECK-NEXT: "begin": {174// CHECK-NEXT: "offset": {{[0-9]+}},175// CHECK-NEXT: "col": 3,176// CHECK-NEXT: "tokLen": 4177// CHECK-NEXT: },178// CHECK-NEXT: "end": {179// CHECK-NEXT: "offset": {{[0-9]+}},180// CHECK-NEXT: "col": 3,181// CHECK-NEXT: "tokLen": 4182// CHECK-NEXT: }183// CHECK-NEXT: },184// CHECK-NEXT: "name": "Four",185// CHECK-NEXT: "type": {186// CHECK-NEXT: "qualType": "E"187// CHECK-NEXT: }188// CHECK-NEXT: }189// CHECK-NEXT: ]190// CHECK-NEXT: }191 192// CHECK-NOT: {{^}}Dumping193// CHECK: "kind": "EnumDecl",194// CHECK-NEXT: "loc": {195// CHECK-NEXT: "offset": {{[0-9]+}},196// CHECK-NEXT: "line": 13,197// CHECK-NEXT: "col": 6,198// CHECK-NEXT: "tokLen": 1199// CHECK-NEXT: },200// CHECK-NEXT: "range": {201// CHECK-NEXT: "begin": {202// CHECK-NEXT: "offset": {{[0-9]+}},203// CHECK-NEXT: "col": 1,204// CHECK-NEXT: "tokLen": 4205// CHECK-NEXT: },206// CHECK-NEXT: "end": {207// CHECK-NEXT: "offset": {{[0-9]+}},208// CHECK-NEXT: "line": 16,209// CHECK-NEXT: "col": 1,210// CHECK-NEXT: "tokLen": 1211// CHECK-NEXT: }212// CHECK-NEXT: },213// CHECK-NEXT: "name": "F",214// CHECK-NEXT: "fixedUnderlyingType": {215// CHECK-NEXT: "qualType": "short"216// CHECK-NEXT: },217// CHECK-NEXT: "inner": [218// CHECK-NEXT: {219// CHECK-NEXT: "id": "0x{{.*}}",220// CHECK-NEXT: "kind": "EnumConstantDecl",221// CHECK-NEXT: "loc": {222// CHECK-NEXT: "offset": {{[0-9]+}},223// CHECK-NEXT: "line": 14,224// CHECK-NEXT: "col": 3,225// CHECK-NEXT: "tokLen": 4226// CHECK-NEXT: },227// CHECK-NEXT: "range": {228// CHECK-NEXT: "begin": {229// CHECK-NEXT: "offset": {{[0-9]+}},230// CHECK-NEXT: "col": 3,231// CHECK-NEXT: "tokLen": 4232// CHECK-NEXT: },233// CHECK-NEXT: "end": {234// CHECK-NEXT: "offset": {{[0-9]+}},235// CHECK-NEXT: "col": 3,236// CHECK-NEXT: "tokLen": 4237// CHECK-NEXT: }238// CHECK-NEXT: },239// CHECK-NEXT: "name": "Five",240// CHECK-NEXT: "type": {241// CHECK-NEXT: "qualType": "F"242// CHECK-NEXT: }243// CHECK-NEXT: },244// CHECK-NEXT: {245// CHECK-NEXT: "id": "0x{{.*}}",246// CHECK-NEXT: "kind": "EnumConstantDecl",247// CHECK-NEXT: "loc": {248// CHECK-NEXT: "offset": {{[0-9]+}},249// CHECK-NEXT: "line": 15,250// CHECK-NEXT: "col": 3,251// CHECK-NEXT: "tokLen": 3252// CHECK-NEXT: },253// CHECK-NEXT: "range": {254// CHECK-NEXT: "begin": {255// CHECK-NEXT: "offset": {{[0-9]+}},256// CHECK-NEXT: "col": 3,257// CHECK-NEXT: "tokLen": 3258// CHECK-NEXT: },259// CHECK-NEXT: "end": {260// CHECK-NEXT: "offset": {{[0-9]+}},261// CHECK-NEXT: "col": 3,262// CHECK-NEXT: "tokLen": 3263// CHECK-NEXT: }264// CHECK-NEXT: },265// CHECK-NEXT: "name": "Six",266// CHECK-NEXT: "type": {267// CHECK-NEXT: "qualType": "F"268// CHECK-NEXT: }269// CHECK-NEXT: }270// CHECK-NEXT: ]271// CHECK-NEXT: }272 273// CHECK-NOT: {{^}}Dumping274// CHECK: "kind": "EnumDecl",275// CHECK-NEXT: "loc": {276// CHECK-NEXT: "offset": {{[0-9]+}},277// CHECK-NEXT: "line": 18,278// CHECK-NEXT: "col": 13,279// CHECK-NEXT: "tokLen": 1280// CHECK-NEXT: },281// CHECK-NEXT: "range": {282// CHECK-NEXT: "begin": {283// CHECK-NEXT: "offset": {{[0-9]+}},284// CHECK-NEXT: "col": 1,285// CHECK-NEXT: "tokLen": 4286// CHECK-NEXT: },287// CHECK-NEXT: "end": {288// CHECK-NEXT: "offset": {{[0-9]+}},289// CHECK-NEXT: "line": 21,290// CHECK-NEXT: "col": 1,291// CHECK-NEXT: "tokLen": 1292// CHECK-NEXT: }293// CHECK-NEXT: },294// CHECK-NEXT: "name": "G",295// CHECK-NEXT: "fixedUnderlyingType": {296// CHECK-NEXT: "qualType": "int"297// CHECK-NEXT: },298// CHECK-NEXT: "scopedEnumTag": "struct",299// CHECK-NEXT: "inner": [300// CHECK-NEXT: {301// CHECK-NEXT: "id": "0x{{.*}}",302// CHECK-NEXT: "kind": "EnumConstantDecl",303// CHECK-NEXT: "loc": {304// CHECK-NEXT: "offset": {{[0-9]+}},305// CHECK-NEXT: "line": 19,306// CHECK-NEXT: "col": 3,307// CHECK-NEXT: "tokLen": 5308// CHECK-NEXT: },309// CHECK-NEXT: "range": {310// CHECK-NEXT: "begin": {311// CHECK-NEXT: "offset": {{[0-9]+}},312// CHECK-NEXT: "col": 3,313// CHECK-NEXT: "tokLen": 5314// CHECK-NEXT: },315// CHECK-NEXT: "end": {316// CHECK-NEXT: "offset": {{[0-9]+}},317// CHECK-NEXT: "col": 3,318// CHECK-NEXT: "tokLen": 5319// CHECK-NEXT: }320// CHECK-NEXT: },321// CHECK-NEXT: "name": "Seven",322// CHECK-NEXT: "type": {323// CHECK-NEXT: "qualType": "G"324// CHECK-NEXT: }325// CHECK-NEXT: },326// CHECK-NEXT: {327// CHECK-NEXT: "id": "0x{{.*}}",328// CHECK-NEXT: "kind": "EnumConstantDecl",329// CHECK-NEXT: "loc": {330// CHECK-NEXT: "offset": {{[0-9]+}},331// CHECK-NEXT: "line": 20,332// CHECK-NEXT: "col": 3,333// CHECK-NEXT: "tokLen": 5334// CHECK-NEXT: },335// CHECK-NEXT: "range": {336// CHECK-NEXT: "begin": {337// CHECK-NEXT: "offset": {{[0-9]+}},338// CHECK-NEXT: "col": 3,339// CHECK-NEXT: "tokLen": 5340// CHECK-NEXT: },341// CHECK-NEXT: "end": {342// CHECK-NEXT: "offset": {{[0-9]+}},343// CHECK-NEXT: "col": 3,344// CHECK-NEXT: "tokLen": 5345// CHECK-NEXT: }346// CHECK-NEXT: },347// CHECK-NEXT: "name": "Eight",348// CHECK-NEXT: "type": {349// CHECK-NEXT: "qualType": "G"350// CHECK-NEXT: }351// CHECK-NEXT: }352// CHECK-NEXT: ]353// CHECK-NEXT: }354 355// CHECK-NOT: {{^}}Dumping356// CHECK: "kind": "EnumDecl",357// CHECK-NEXT: "loc": {358// CHECK-NEXT: "offset": {{[0-9]+}},359// CHECK-NEXT: "line": 23,360// CHECK-NEXT: "col": 12,361// CHECK-NEXT: "tokLen": 1362// CHECK-NEXT: },363// CHECK-NEXT: "range": {364// CHECK-NEXT: "begin": {365// CHECK-NEXT: "offset": {{[0-9]+}},366// CHECK-NEXT: "col": 1,367// CHECK-NEXT: "tokLen": 4368// CHECK-NEXT: },369// CHECK-NEXT: "end": {370// CHECK-NEXT: "offset": {{[0-9]+}},371// CHECK-NEXT: "line": 26,372// CHECK-NEXT: "col": 1,373// CHECK-NEXT: "tokLen": 1374// CHECK-NEXT: }375// CHECK-NEXT: },376// CHECK-NEXT: "name": "H",377// CHECK-NEXT: "fixedUnderlyingType": {378// CHECK-NEXT: "qualType": "int"379// CHECK-NEXT: },380// CHECK-NEXT: "scopedEnumTag": "class",381// CHECK-NEXT: "inner": [382// CHECK-NEXT: {383// CHECK-NEXT: "id": "0x{{.*}}",384// CHECK-NEXT: "kind": "EnumConstantDecl",385// CHECK-NEXT: "loc": {386// CHECK-NEXT: "offset": {{[0-9]+}},387// CHECK-NEXT: "line": 24,388// CHECK-NEXT: "col": 3,389// CHECK-NEXT: "tokLen": 4390// CHECK-NEXT: },391// CHECK-NEXT: "range": {392// CHECK-NEXT: "begin": {393// CHECK-NEXT: "offset": {{[0-9]+}},394// CHECK-NEXT: "col": 3,395// CHECK-NEXT: "tokLen": 4396// CHECK-NEXT: },397// CHECK-NEXT: "end": {398// CHECK-NEXT: "offset": {{[0-9]+}},399// CHECK-NEXT: "col": 3,400// CHECK-NEXT: "tokLen": 4401// CHECK-NEXT: }402// CHECK-NEXT: },403// CHECK-NEXT: "name": "Nine",404// CHECK-NEXT: "type": {405// CHECK-NEXT: "qualType": "H"406// CHECK-NEXT: }407// CHECK-NEXT: },408// CHECK-NEXT: {409// CHECK-NEXT: "id": "0x{{.*}}",410// CHECK-NEXT: "kind": "EnumConstantDecl",411// CHECK-NEXT: "loc": {412// CHECK-NEXT: "offset": {{[0-9]+}},413// CHECK-NEXT: "line": 25,414// CHECK-NEXT: "col": 3,415// CHECK-NEXT: "tokLen": 3416// CHECK-NEXT: },417// CHECK-NEXT: "range": {418// CHECK-NEXT: "begin": {419// CHECK-NEXT: "offset": {{[0-9]+}},420// CHECK-NEXT: "col": 3,421// CHECK-NEXT: "tokLen": 3422// CHECK-NEXT: },423// CHECK-NEXT: "end": {424// CHECK-NEXT: "offset": {{[0-9]+}},425// CHECK-NEXT: "col": 3,426// CHECK-NEXT: "tokLen": 3427// CHECK-NEXT: }428// CHECK-NEXT: },429// CHECK-NEXT: "name": "Ten",430// CHECK-NEXT: "type": {431// CHECK-NEXT: "qualType": "H"432// CHECK-NEXT: }433// CHECK-NEXT: }434// CHECK-NEXT: ]435// CHECK-NEXT: }436 437// CHECK-NOT: {{^}}Dumping438// CHECK: "kind": "EnumDecl",439// CHECK-NEXT: "loc": {440// CHECK-NEXT: "offset": {{[0-9]+}},441// CHECK-NEXT: "line": 28,442// CHECK-NEXT: "col": 12,443// CHECK-NEXT: "tokLen": 1444// CHECK-NEXT: },445// CHECK-NEXT: "range": {446// CHECK-NEXT: "begin": {447// CHECK-NEXT: "offset": {{[0-9]+}},448// CHECK-NEXT: "col": 1,449// CHECK-NEXT: "tokLen": 4450// CHECK-NEXT: },451// CHECK-NEXT: "end": {452// CHECK-NEXT: "offset": {{[0-9]+}},453// CHECK-NEXT: "line": 31,454// CHECK-NEXT: "col": 1,455// CHECK-NEXT: "tokLen": 1456// CHECK-NEXT: }457// CHECK-NEXT: },458// CHECK-NEXT: "name": "I",459// CHECK-NEXT: "fixedUnderlyingType": {460// CHECK-NEXT: "qualType": "int"461// CHECK-NEXT: },462// CHECK-NEXT: "scopedEnumTag": "class",463// CHECK-NEXT: "inner": [464// CHECK-NEXT: {465// CHECK-NEXT: "id": "0x{{.*}}",466// CHECK-NEXT: "kind": "EnumConstantDecl",467// CHECK-NEXT: "loc": {468// CHECK-NEXT: "offset": {{[0-9]+}},469// CHECK-NEXT: "line": 29,470// CHECK-NEXT: "col": 3,471// CHECK-NEXT: "tokLen": 6472// CHECK-NEXT: },473// CHECK-NEXT: "range": {474// CHECK-NEXT: "begin": {475// CHECK-NEXT: "offset": {{[0-9]+}},476// CHECK-NEXT: "col": 3,477// CHECK-NEXT: "tokLen": 6478// CHECK-NEXT: },479// CHECK-NEXT: "end": {480// CHECK-NEXT: "offset": {{[0-9]+}},481// CHECK-NEXT: "col": 3,482// CHECK-NEXT: "tokLen": 6483// CHECK-NEXT: }484// CHECK-NEXT: },485// CHECK-NEXT: "name": "Eleven",486// CHECK-NEXT: "type": {487// CHECK-NEXT: "qualType": "I"488// CHECK-NEXT: }489// CHECK-NEXT: },490// CHECK-NEXT: {491// CHECK-NEXT: "id": "0x{{.*}}",492// CHECK-NEXT: "kind": "EnumConstantDecl",493// CHECK-NEXT: "loc": {494// CHECK-NEXT: "offset": {{[0-9]+}},495// CHECK-NEXT: "line": 30,496// CHECK-NEXT: "col": 3,497// CHECK-NEXT: "tokLen": 6498// CHECK-NEXT: },499// CHECK-NEXT: "range": {500// CHECK-NEXT: "begin": {501// CHECK-NEXT: "offset": {{[0-9]+}},502// CHECK-NEXT: "col": 3,503// CHECK-NEXT: "tokLen": 6504// CHECK-NEXT: },505// CHECK-NEXT: "end": {506// CHECK-NEXT: "offset": {{[0-9]+}},507// CHECK-NEXT: "col": 3,508// CHECK-NEXT: "tokLen": 6509// CHECK-NEXT: }510// CHECK-NEXT: },511// CHECK-NEXT: "name": "Twelve",512// CHECK-NEXT: "type": {513// CHECK-NEXT: "qualType": "I"514// CHECK-NEXT: }515// CHECK-NEXT: }516// CHECK-NEXT: ]517// CHECK-NEXT: }518