Skip to content

Commit c274bbe

Browse files
authored
[clang-doc][NFC] Prefer static functions for internal APIs (llvm#136391)
Additionally moving the declarations from Generator.cpp prevents misc-use-internal-linkage warnings from clang-tidy. We fix those here too, since the static functions are part of the same diagnostic
1 parent c5c2851 commit c274bbe

File tree

6 files changed

+94
-82
lines changed

6 files changed

+94
-82
lines changed

clang-tools-extra/clang-doc/BitcodeReader.cpp

+67-61
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ namespace doc {
1818
using Record = llvm::SmallVector<uint64_t, 1024>;
1919

2020
// This implements decode for SmallString.
21-
llvm::Error decodeRecord(const Record &R, llvm::SmallVectorImpl<char> &Field,
22-
llvm::StringRef Blob) {
21+
static llvm::Error decodeRecord(const Record &R,
22+
llvm::SmallVectorImpl<char> &Field,
23+
llvm::StringRef Blob) {
2324
Field.assign(Blob.begin(), Blob.end());
2425
return llvm::Error::success();
2526
}
2627

27-
llvm::Error decodeRecord(const Record &R, SymbolID &Field,
28-
llvm::StringRef Blob) {
28+
static llvm::Error decodeRecord(const Record &R, SymbolID &Field,
29+
llvm::StringRef Blob) {
2930
if (R[0] != BitCodeConstants::USRHashSize)
3031
return llvm::createStringError(llvm::inconvertibleErrorCode(),
3132
"incorrect USR size");
@@ -37,21 +38,23 @@ llvm::Error decodeRecord(const Record &R, SymbolID &Field,
3738
return llvm::Error::success();
3839
}
3940

40-
llvm::Error decodeRecord(const Record &R, bool &Field, llvm::StringRef Blob) {
41+
static llvm::Error decodeRecord(const Record &R, bool &Field,
42+
llvm::StringRef Blob) {
4143
Field = R[0] != 0;
4244
return llvm::Error::success();
4345
}
4446

45-
llvm::Error decodeRecord(const Record &R, int &Field, llvm::StringRef Blob) {
47+
static llvm::Error decodeRecord(const Record &R, int &Field,
48+
llvm::StringRef Blob) {
4649
if (R[0] > INT_MAX)
4750
return llvm::createStringError(llvm::inconvertibleErrorCode(),
4851
"integer too large to parse");
4952
Field = static_cast<int>(R[0]);
5053
return llvm::Error::success();
5154
}
5255

53-
llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
54-
llvm::StringRef Blob) {
56+
static llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
57+
llvm::StringRef Blob) {
5558
switch (R[0]) {
5659
case AS_public:
5760
case AS_private:
@@ -65,8 +68,8 @@ llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
6568
}
6669
}
6770

68-
llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
69-
llvm::StringRef Blob) {
71+
static llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
72+
llvm::StringRef Blob) {
7073
switch (static_cast<TagTypeKind>(R[0])) {
7174
case TagTypeKind::Struct:
7275
case TagTypeKind::Interface:
@@ -80,17 +83,17 @@ llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
8083
"invalid value for TagTypeKind");
8184
}
8285

83-
llvm::Error decodeRecord(const Record &R, std::optional<Location> &Field,
84-
llvm::StringRef Blob) {
86+
static llvm::Error decodeRecord(const Record &R, std::optional<Location> &Field,
87+
llvm::StringRef Blob) {
8588
if (R[0] > INT_MAX)
8689
return llvm::createStringError(llvm::inconvertibleErrorCode(),
8790
"integer too large to parse");
8891
Field.emplace(static_cast<int>(R[0]), Blob, static_cast<bool>(R[1]));
8992
return llvm::Error::success();
9093
}
9194

92-
llvm::Error decodeRecord(const Record &R, InfoType &Field,
93-
llvm::StringRef Blob) {
95+
static llvm::Error decodeRecord(const Record &R, InfoType &Field,
96+
llvm::StringRef Blob) {
9497
switch (auto IT = static_cast<InfoType>(R[0])) {
9598
case InfoType::IT_namespace:
9699
case InfoType::IT_record:
@@ -105,8 +108,8 @@ llvm::Error decodeRecord(const Record &R, InfoType &Field,
105108
"invalid value for InfoType");
106109
}
107110

108-
llvm::Error decodeRecord(const Record &R, FieldId &Field,
109-
llvm::StringRef Blob) {
111+
static llvm::Error decodeRecord(const Record &R, FieldId &Field,
112+
llvm::StringRef Blob) {
110113
switch (auto F = static_cast<FieldId>(R[0])) {
111114
case FieldId::F_namespace:
112115
case FieldId::F_parent:
@@ -122,33 +125,34 @@ llvm::Error decodeRecord(const Record &R, FieldId &Field,
122125
"invalid value for FieldId");
123126
}
124127

125-
llvm::Error decodeRecord(const Record &R,
126-
llvm::SmallVectorImpl<llvm::SmallString<16>> &Field,
127-
llvm::StringRef Blob) {
128+
static llvm::Error
129+
decodeRecord(const Record &R,
130+
llvm::SmallVectorImpl<llvm::SmallString<16>> &Field,
131+
llvm::StringRef Blob) {
128132
Field.push_back(Blob);
129133
return llvm::Error::success();
130134
}
131135

132-
llvm::Error decodeRecord(const Record &R,
133-
llvm::SmallVectorImpl<Location> &Field,
134-
llvm::StringRef Blob) {
136+
static llvm::Error decodeRecord(const Record &R,
137+
llvm::SmallVectorImpl<Location> &Field,
138+
llvm::StringRef Blob) {
135139
if (R[0] > INT_MAX)
136140
return llvm::createStringError(llvm::inconvertibleErrorCode(),
137141
"integer too large to parse");
138142
Field.emplace_back(static_cast<int>(R[0]), Blob, static_cast<bool>(R[1]));
139143
return llvm::Error::success();
140144
}
141145

142-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
143-
const unsigned VersionNo) {
146+
static llvm::Error parseRecord(const Record &R, unsigned ID,
147+
llvm::StringRef Blob, const unsigned VersionNo) {
144148
if (ID == VERSION && R[0] == VersionNo)
145149
return llvm::Error::success();
146150
return llvm::createStringError(llvm::inconvertibleErrorCode(),
147151
"mismatched bitcode version number");
148152
}
149153

150-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
151-
NamespaceInfo *I) {
154+
static llvm::Error parseRecord(const Record &R, unsigned ID,
155+
llvm::StringRef Blob, NamespaceInfo *I) {
152156
switch (ID) {
153157
case NAMESPACE_USR:
154158
return decodeRecord(R, I->USR, Blob);
@@ -162,8 +166,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
162166
}
163167
}
164168

165-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
166-
RecordInfo *I) {
169+
static llvm::Error parseRecord(const Record &R, unsigned ID,
170+
llvm::StringRef Blob, RecordInfo *I) {
167171
switch (ID) {
168172
case RECORD_USR:
169173
return decodeRecord(R, I->USR, Blob);
@@ -185,8 +189,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
185189
}
186190
}
187191

188-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
189-
BaseRecordInfo *I) {
192+
static llvm::Error parseRecord(const Record &R, unsigned ID,
193+
llvm::StringRef Blob, BaseRecordInfo *I) {
190194
switch (ID) {
191195
case BASE_RECORD_USR:
192196
return decodeRecord(R, I->USR, Blob);
@@ -208,8 +212,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
208212
}
209213
}
210214

211-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
212-
EnumInfo *I) {
215+
static llvm::Error parseRecord(const Record &R, unsigned ID,
216+
llvm::StringRef Blob, EnumInfo *I) {
213217
switch (ID) {
214218
case ENUM_USR:
215219
return decodeRecord(R, I->USR, Blob);
@@ -227,8 +231,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
227231
}
228232
}
229233

230-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
231-
TypedefInfo *I) {
234+
static llvm::Error parseRecord(const Record &R, unsigned ID,
235+
llvm::StringRef Blob, TypedefInfo *I) {
232236
switch (ID) {
233237
case TYPEDEF_USR:
234238
return decodeRecord(R, I->USR, Blob);
@@ -244,8 +248,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
244248
}
245249
}
246250

247-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
248-
EnumValueInfo *I) {
251+
static llvm::Error parseRecord(const Record &R, unsigned ID,
252+
llvm::StringRef Blob, EnumValueInfo *I) {
249253
switch (ID) {
250254
case ENUM_VALUE_NAME:
251255
return decodeRecord(R, I->Name, Blob);
@@ -259,8 +263,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
259263
}
260264
}
261265

262-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
263-
FunctionInfo *I) {
266+
static llvm::Error parseRecord(const Record &R, unsigned ID,
267+
llvm::StringRef Blob, FunctionInfo *I) {
264268
switch (ID) {
265269
case FUNCTION_USR:
266270
return decodeRecord(R, I->USR, Blob);
@@ -282,13 +286,13 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
282286
}
283287
}
284288

285-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
286-
TypeInfo *I) {
289+
static llvm::Error parseRecord(const Record &R, unsigned ID,
290+
llvm::StringRef Blob, TypeInfo *I) {
287291
return llvm::Error::success();
288292
}
289293

290-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
291-
FieldTypeInfo *I) {
294+
static llvm::Error parseRecord(const Record &R, unsigned ID,
295+
llvm::StringRef Blob, FieldTypeInfo *I) {
292296
switch (ID) {
293297
case FIELD_TYPE_NAME:
294298
return decodeRecord(R, I->Name, Blob);
@@ -300,8 +304,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
300304
}
301305
}
302306

303-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
304-
MemberTypeInfo *I) {
307+
static llvm::Error parseRecord(const Record &R, unsigned ID,
308+
llvm::StringRef Blob, MemberTypeInfo *I) {
305309
switch (ID) {
306310
case MEMBER_TYPE_NAME:
307311
return decodeRecord(R, I->Name, Blob);
@@ -315,8 +319,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
315319
}
316320
}
317321

318-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
319-
CommentInfo *I) {
322+
static llvm::Error parseRecord(const Record &R, unsigned ID,
323+
llvm::StringRef Blob, CommentInfo *I) {
320324
switch (ID) {
321325
case COMMENT_KIND:
322326
return decodeRecord(R, I->Kind, Blob);
@@ -346,8 +350,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
346350
}
347351
}
348352

349-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
350-
Reference *I, FieldId &F) {
353+
static llvm::Error parseRecord(const Record &R, unsigned ID,
354+
llvm::StringRef Blob, Reference *I, FieldId &F) {
351355
switch (ID) {
352356
case REFERENCE_USR:
353357
return decodeRecord(R, I->USR, Blob);
@@ -367,30 +371,31 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
367371
}
368372
}
369373

370-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
371-
TemplateInfo *I) {
374+
static llvm::Error parseRecord(const Record &R, unsigned ID,
375+
llvm::StringRef Blob, TemplateInfo *I) {
372376
// Currently there are no child records of TemplateInfo (only child blocks).
373377
return llvm::createStringError(llvm::inconvertibleErrorCode(),
374378
"invalid field for TemplateParamInfo");
375379
}
376380

377-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
378-
TemplateSpecializationInfo *I) {
381+
static llvm::Error parseRecord(const Record &R, unsigned ID,
382+
llvm::StringRef Blob,
383+
TemplateSpecializationInfo *I) {
379384
if (ID == TEMPLATE_SPECIALIZATION_OF)
380385
return decodeRecord(R, I->SpecializationOf, Blob);
381386
return llvm::createStringError(llvm::inconvertibleErrorCode(),
382387
"invalid field for TemplateParamInfo");
383388
}
384389

385-
llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
386-
TemplateParamInfo *I) {
390+
static llvm::Error parseRecord(const Record &R, unsigned ID,
391+
llvm::StringRef Blob, TemplateParamInfo *I) {
387392
if (ID == TEMPLATE_PARAM_CONTENTS)
388393
return decodeRecord(R, I->Contents, Blob);
389394
return llvm::createStringError(llvm::inconvertibleErrorCode(),
390395
"invalid field for TemplateParamInfo");
391396
}
392397

393-
template <typename T> llvm::Expected<CommentInfo *> getCommentInfo(T I) {
398+
template <typename T> static llvm::Expected<CommentInfo *> getCommentInfo(T I) {
394399
return llvm::createStringError(llvm::inconvertibleErrorCode(),
395400
"invalid type cannot contain CommentInfo");
396401
}
@@ -437,7 +442,7 @@ llvm::Expected<CommentInfo *> getCommentInfo(std::unique_ptr<CommentInfo> &I) {
437442
// the parent block to set it. The template specializations define what to do
438443
// for each supported parent block.
439444
template <typename T, typename TTypeInfo>
440-
llvm::Error addTypeInfo(T I, TTypeInfo &&TI) {
445+
static llvm::Error addTypeInfo(T I, TTypeInfo &&TI) {
441446
return llvm::createStringError(llvm::inconvertibleErrorCode(),
442447
"invalid type cannot contain TypeInfo");
443448
}
@@ -472,7 +477,8 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I, TypeInfo &&T) {
472477
return llvm::Error::success();
473478
}
474479

475-
template <typename T> llvm::Error addReference(T I, Reference &&R, FieldId F) {
480+
template <typename T>
481+
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
476482
return llvm::createStringError(llvm::inconvertibleErrorCode(),
477483
"invalid type cannot contain Reference");
478484
}
@@ -588,7 +594,7 @@ template <> llvm::Error addReference(RecordInfo *I, Reference &&R, FieldId F) {
588594
}
589595

590596
template <typename T, typename ChildInfoType>
591-
void addChild(T I, ChildInfoType &&R) {
597+
static void addChild(T I, ChildInfoType &&R) {
592598
llvm::errs() << "invalid child type for info";
593599
exit(1);
594600
}
@@ -629,7 +635,7 @@ template <> void addChild(BaseRecordInfo *I, FunctionInfo &&R) {
629635
// TemplateParam children. These go into either a TemplateInfo (for template
630636
// parameters) or TemplateSpecializationInfo (for the specialization's
631637
// parameters).
632-
template <typename T> void addTemplateParam(T I, TemplateParamInfo &&P) {
638+
template <typename T> static void addTemplateParam(T I, TemplateParamInfo &&P) {
633639
llvm::errs() << "invalid container for template parameter";
634640
exit(1);
635641
}
@@ -642,7 +648,7 @@ void addTemplateParam(TemplateSpecializationInfo *I, TemplateParamInfo &&P) {
642648
}
643649

644650
// Template info. These apply to either records or functions.
645-
template <typename T> void addTemplate(T I, TemplateInfo &&P) {
651+
template <typename T> static void addTemplate(T I, TemplateInfo &&P) {
646652
llvm::errs() << "invalid container for template info";
647653
exit(1);
648654
}
@@ -655,7 +661,7 @@ template <> void addTemplate(FunctionInfo *I, TemplateInfo &&P) {
655661

656662
// Template specializations go only into template records.
657663
template <typename T>
658-
void addTemplateSpecialization(T I, TemplateSpecializationInfo &&TSI) {
664+
static void addTemplateSpecialization(T I, TemplateSpecializationInfo &&TSI) {
659665
llvm::errs() << "invalid container for template specialization info";
660666
exit(1);
661667
}

clang-tools-extra/clang-doc/Generators.cpp

-3
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ void Generator::addInfoToIndex(Index &Idx, const doc::Info *Info) {
9797

9898
// This anchor is used to force the linker to link in the generated object file
9999
// and thus register the generators.
100-
extern volatile int YAMLGeneratorAnchorSource;
101-
extern volatile int MDGeneratorAnchorSource;
102-
extern volatile int HTMLGeneratorAnchorSource;
103100
static int LLVM_ATTRIBUTE_UNUSED YAMLGeneratorAnchorDest =
104101
YAMLGeneratorAnchorSource;
105102
static int LLVM_ATTRIBUTE_UNUSED MDGeneratorAnchorDest =

clang-tools-extra/clang-doc/Generators.h

+6
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ findGeneratorByName(llvm::StringRef Format);
5252

5353
std::string getTagType(TagTypeKind AS);
5454

55+
// This anchor is used to force the linker to link in the generated object file
56+
// and thus register the generators.
57+
extern volatile int YAMLGeneratorAnchorSource;
58+
extern volatile int MDGeneratorAnchorSource;
59+
extern volatile int HTMLGeneratorAnchorSource;
60+
5561
} // namespace doc
5662
} // namespace clang
5763

clang-tools-extra/clang-doc/Mapper.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ namespace doc {
2121
static llvm::StringSet<> USRVisited;
2222
static llvm::sys::SmartMutex<true> USRVisitedGuard;
2323

24-
template <typename T> bool isTypedefAnonRecord(const T *D) {
24+
template <typename T> static bool isTypedefAnonRecord(const T *D) {
2525
if (const auto *C = dyn_cast<CXXRecordDecl>(D)) {
2626
return C->getTypedefNameForAnonDecl();
2727
}

0 commit comments

Comments
 (0)