Skip to content

Commit 4d3ba69

Browse files
chaitanyavdaniel-grumberg
authored andcommitted
[clang][ExtractAPI] Add semicolons for enum, typedef, struct declaration fragments
Fixes llvm#61480 Reviewed By: dang Differential Revision: https://reviews.llvm.org/D146354
1 parent 7d764ce commit 4d3ba69

File tree

8 files changed

+84
-3
lines changed

8 files changed

+84
-3
lines changed

clang/lib/ExtractAPI/DeclarationFragments.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ DeclarationFragmentsBuilder::getFragmentsForEnum(const EnumDecl *EnumDecl) {
470470
getFragmentsForType(IntegerType, EnumDecl->getASTContext(), After))
471471
.append(std::move(After));
472472

473-
return Fragments;
473+
return Fragments.append(";", DeclarationFragments::FragmentKind::Text);
474474
}
475475

476476
DeclarationFragments
@@ -493,7 +493,8 @@ DeclarationFragmentsBuilder::getFragmentsForStruct(const RecordDecl *Record) {
493493
if (!Record->getName().empty())
494494
Fragments.appendSpace().append(
495495
Record->getName(), DeclarationFragments::FragmentKind::Identifier);
496-
return Fragments;
496+
497+
return Fragments.append(";", DeclarationFragments::FragmentKind::Text);
497498
}
498499

499500
DeclarationFragments
@@ -743,7 +744,7 @@ DeclarationFragments DeclarationFragmentsBuilder::getFragmentsForTypedef(
743744
.appendSpace()
744745
.append(Decl->getName(), DeclarationFragments::FragmentKind::Identifier);
745746

746-
return Fragments;
747+
return Fragments.append(";", DeclarationFragments::FragmentKind::Text);
747748
}
748749

749750
template <typename FunctionT>

clang/test/ExtractAPI/anonymous_record_no_typedef.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ struct Vehicle {
9494
"kind": "typeIdentifier",
9595
"preciseIdentifier": "c:i",
9696
"spelling": "unsigned int"
97+
},
98+
{
99+
"kind": "text",
100+
"spelling": ";"
97101
}
98102
],
99103
"docComment": {
@@ -241,6 +245,10 @@ struct Vehicle {
241245
{
242246
"kind": "identifier",
243247
"spelling": "Vehicle"
248+
},
249+
{
250+
"kind": "text",
251+
"spelling": ";"
244252
}
245253
],
246254
"docComment": {

clang/test/ExtractAPI/enum.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ enum {
153153
"kind": "typeIdentifier",
154154
"preciseIdentifier": "c:i",
155155
"spelling": "unsigned int"
156+
},
157+
{
158+
"kind": "text",
159+
"spelling": ";"
156160
}
157161
],
158162
"docComment": {
@@ -461,6 +465,10 @@ enum {
461465
"kind": "typeIdentifier",
462466
"preciseIdentifier": "c:c",
463467
"spelling": "unsigned char"
468+
},
469+
{
470+
"kind": "text",
471+
"spelling": ";"
464472
}
465473
],
466474
"identifier": {
@@ -684,6 +692,10 @@ enum {
684692
"kind": "typeIdentifier",
685693
"preciseIdentifier": "c:i",
686694
"spelling": "unsigned int"
695+
},
696+
{
697+
"kind": "text",
698+
"spelling": ";"
687699
}
688700
],
689701
"identifier": {
@@ -772,6 +784,10 @@ enum {
772784
"kind": "typeIdentifier",
773785
"preciseIdentifier": "c:i",
774786
"spelling": "unsigned int"
787+
},
788+
{
789+
"kind": "text",
790+
"spelling": ";"
775791
}
776792
],
777793
"identifier": {

clang/test/ExtractAPI/struct.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ struct Color {
8989
{
9090
"kind": "identifier",
9191
"spelling": "Color"
92+
},
93+
{
94+
"kind": "text",
95+
"spelling": ";"
9296
}
9397
],
9498
"docComment": {

clang/test/ExtractAPI/typedef.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ typedef int MyInt;
6666
{
6767
"kind": "identifier",
6868
"spelling": "MyInt"
69+
},
70+
{
71+
"kind": "text",
72+
"spelling": ";"
6973
}
7074
],
7175
"identifier": {

clang/test/ExtractAPI/typedef_anonymous_record.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ typedef MyEnumEnum MyEnumEnumEnum;
7575
{
7676
"kind": "identifier",
7777
"spelling": "MyEnum"
78+
},
79+
{
80+
"kind": "text",
81+
"spelling": ";"
7882
}
7983
],
8084
"identifier": {
@@ -170,6 +174,10 @@ typedef MyEnumEnum MyEnumEnumEnum;
170174
{
171175
"kind": "identifier",
172176
"spelling": "MyStruct"
177+
},
178+
{
179+
"kind": "text",
180+
"spelling": ";"
173181
}
174182
],
175183
"identifier": {
@@ -223,6 +231,10 @@ typedef MyEnumEnum MyEnumEnumEnum;
223231
{
224232
"kind": "identifier",
225233
"spelling": "MyStructStruct"
234+
},
235+
{
236+
"kind": "text",
237+
"spelling": ";"
226238
}
227239
],
228240
"identifier": {
@@ -283,6 +295,10 @@ typedef MyEnumEnum MyEnumEnumEnum;
283295
{
284296
"kind": "identifier",
285297
"spelling": "MyStructStructStruct"
298+
},
299+
{
300+
"kind": "text",
301+
"spelling": ";"
286302
}
287303
],
288304
"identifier": {
@@ -343,6 +359,10 @@ typedef MyEnumEnum MyEnumEnumEnum;
343359
{
344360
"kind": "identifier",
345361
"spelling": "MyEnumEnum"
362+
},
363+
{
364+
"kind": "text",
365+
"spelling": ";"
346366
}
347367
],
348368
"identifier": {
@@ -403,6 +423,10 @@ typedef MyEnumEnum MyEnumEnumEnum;
403423
{
404424
"kind": "identifier",
405425
"spelling": "MyEnumEnumEnum"
426+
},
427+
{
428+
"kind": "text",
429+
"spelling": ";"
406430
}
407431
],
408432
"identifier": {

clang/test/ExtractAPI/typedef_chain.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ typedef MyIntInt MyIntIntInt;
6868
{
6969
"kind": "identifier",
7070
"spelling": "MyInt"
71+
},
72+
{
73+
"kind": "text",
74+
"spelling": ";"
7175
}
7276
],
7377
"identifier": {
@@ -128,6 +132,10 @@ typedef MyIntInt MyIntIntInt;
128132
{
129133
"kind": "identifier",
130134
"spelling": "MyIntInt"
135+
},
136+
{
137+
"kind": "text",
138+
"spelling": ";"
131139
}
132140
],
133141
"identifier": {
@@ -188,6 +196,10 @@ typedef MyIntInt MyIntIntInt;
188196
{
189197
"kind": "identifier",
190198
"spelling": "MyIntIntInt"
199+
},
200+
{
201+
"kind": "text",
202+
"spelling": ";"
191203
}
192204
],
193205
"identifier": {

clang/test/ExtractAPI/underscored.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ typedef _HiddenTypedef ExposedTypedefToHidden;
135135
{
136136
"kind": "identifier",
137137
"spelling": "ExposedRecord"
138+
},
139+
{
140+
"kind": "text",
141+
"spelling": ";"
138142
}
139143
],
140144
"identifier": {
@@ -296,6 +300,10 @@ typedef _HiddenTypedef ExposedTypedefToHidden;
296300
{
297301
"kind": "identifier",
298302
"spelling": "ExposedTypedef"
303+
},
304+
{
305+
"kind": "text",
306+
"spelling": ";"
299307
}
300308
],
301309
"identifier": {
@@ -356,6 +364,10 @@ typedef _HiddenTypedef ExposedTypedefToHidden;
356364
{
357365
"kind": "identifier",
358366
"spelling": "ExposedTypedefToHidden"
367+
},
368+
{
369+
"kind": "text",
370+
"spelling": ";"
359371
}
360372
],
361373
"identifier": {

0 commit comments

Comments
 (0)