Skip to content

[clang-doc][NFC] Prefer static functions for internal APIs #136391

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 67 additions & 61 deletions clang-tools-extra/clang-doc/BitcodeReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,15 @@ namespace doc {
using Record = llvm::SmallVector<uint64_t, 1024>;

// This implements decode for SmallString.
llvm::Error decodeRecord(const Record &R, llvm::SmallVectorImpl<char> &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R,
llvm::SmallVectorImpl<char> &Field,
llvm::StringRef Blob) {
Field.assign(Blob.begin(), Blob.end());
return llvm::Error::success();
}

llvm::Error decodeRecord(const Record &R, SymbolID &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, SymbolID &Field,
llvm::StringRef Blob) {
if (R[0] != BitCodeConstants::USRHashSize)
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"incorrect USR size");
Expand All @@ -37,21 +38,23 @@ llvm::Error decodeRecord(const Record &R, SymbolID &Field,
return llvm::Error::success();
}

llvm::Error decodeRecord(const Record &R, bool &Field, llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, bool &Field,
llvm::StringRef Blob) {
Field = R[0] != 0;
return llvm::Error::success();
}

llvm::Error decodeRecord(const Record &R, int &Field, llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, int &Field,
llvm::StringRef Blob) {
if (R[0] > INT_MAX)
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"integer too large to parse");
Field = (int)R[0];
return llvm::Error::success();
}

llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
llvm::StringRef Blob) {
switch (R[0]) {
case AS_public:
case AS_private:
Expand All @@ -65,8 +68,8 @@ llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
}
}

llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
llvm::StringRef Blob) {
switch (static_cast<TagTypeKind>(R[0])) {
case TagTypeKind::Struct:
case TagTypeKind::Interface:
Expand All @@ -80,17 +83,17 @@ llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
"invalid value for TagTypeKind");
}

llvm::Error decodeRecord(const Record &R, std::optional<Location> &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, std::optional<Location> &Field,
llvm::StringRef Blob) {
if (R[0] > INT_MAX)
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"integer too large to parse");
Field.emplace((int)R[0], Blob, (bool)R[1]);
return llvm::Error::success();
}

llvm::Error decodeRecord(const Record &R, InfoType &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, InfoType &Field,
llvm::StringRef Blob) {
switch (auto IT = static_cast<InfoType>(R[0])) {
case InfoType::IT_namespace:
case InfoType::IT_record:
Expand All @@ -105,8 +108,8 @@ llvm::Error decodeRecord(const Record &R, InfoType &Field,
"invalid value for InfoType");
}

llvm::Error decodeRecord(const Record &R, FieldId &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R, FieldId &Field,
llvm::StringRef Blob) {
switch (auto F = static_cast<FieldId>(R[0])) {
case FieldId::F_namespace:
case FieldId::F_parent:
Expand All @@ -122,33 +125,34 @@ llvm::Error decodeRecord(const Record &R, FieldId &Field,
"invalid value for FieldId");
}

llvm::Error decodeRecord(const Record &R,
llvm::SmallVectorImpl<llvm::SmallString<16>> &Field,
llvm::StringRef Blob) {
static llvm::Error
decodeRecord(const Record &R,
llvm::SmallVectorImpl<llvm::SmallString<16>> &Field,
llvm::StringRef Blob) {
Field.push_back(Blob);
return llvm::Error::success();
}

llvm::Error decodeRecord(const Record &R,
llvm::SmallVectorImpl<Location> &Field,
llvm::StringRef Blob) {
static llvm::Error decodeRecord(const Record &R,
llvm::SmallVectorImpl<Location> &Field,
llvm::StringRef Blob) {
if (R[0] > INT_MAX)
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"integer too large to parse");
Field.emplace_back((int)R[0], Blob, (bool)R[1]);
return llvm::Error::success();
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
const unsigned VersionNo) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, const unsigned VersionNo) {
if (ID == VERSION && R[0] == VersionNo)
return llvm::Error::success();
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"mismatched bitcode version number");
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
NamespaceInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, NamespaceInfo *I) {
switch (ID) {
case NAMESPACE_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -162,8 +166,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
RecordInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, RecordInfo *I) {
switch (ID) {
case RECORD_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -185,8 +189,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
BaseRecordInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, BaseRecordInfo *I) {
switch (ID) {
case BASE_RECORD_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -208,8 +212,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
EnumInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, EnumInfo *I) {
switch (ID) {
case ENUM_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -227,8 +231,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
TypedefInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, TypedefInfo *I) {
switch (ID) {
case TYPEDEF_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -244,8 +248,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
EnumValueInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, EnumValueInfo *I) {
switch (ID) {
case ENUM_VALUE_NAME:
return decodeRecord(R, I->Name, Blob);
Expand All @@ -259,8 +263,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
FunctionInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, FunctionInfo *I) {
switch (ID) {
case FUNCTION_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -282,13 +286,13 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
TypeInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, TypeInfo *I) {
return llvm::Error::success();
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
FieldTypeInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, FieldTypeInfo *I) {
switch (ID) {
case FIELD_TYPE_NAME:
return decodeRecord(R, I->Name, Blob);
Expand All @@ -300,8 +304,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
MemberTypeInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, MemberTypeInfo *I) {
switch (ID) {
case MEMBER_TYPE_NAME:
return decodeRecord(R, I->Name, Blob);
Expand All @@ -315,8 +319,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
CommentInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, CommentInfo *I) {
switch (ID) {
case COMMENT_KIND:
return decodeRecord(R, I->Kind, Blob);
Expand Down Expand Up @@ -346,8 +350,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
Reference *I, FieldId &F) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, Reference *I, FieldId &F) {
switch (ID) {
case REFERENCE_USR:
return decodeRecord(R, I->USR, Blob);
Expand All @@ -367,30 +371,31 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
}
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
TemplateInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, TemplateInfo *I) {
// Currently there are no child records of TemplateInfo (only child blocks).
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid field for TemplateParamInfo");
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
TemplateSpecializationInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob,
TemplateSpecializationInfo *I) {
if (ID == TEMPLATE_SPECIALIZATION_OF)
return decodeRecord(R, I->SpecializationOf, Blob);
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid field for TemplateParamInfo");
}

llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
TemplateParamInfo *I) {
static llvm::Error parseRecord(const Record &R, unsigned ID,
llvm::StringRef Blob, TemplateParamInfo *I) {
if (ID == TEMPLATE_PARAM_CONTENTS)
return decodeRecord(R, I->Contents, Blob);
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid field for TemplateParamInfo");
}

template <typename T> llvm::Expected<CommentInfo *> getCommentInfo(T I) {
template <typename T> static llvm::Expected<CommentInfo *> getCommentInfo(T I) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain CommentInfo");
}
Expand Down Expand Up @@ -437,7 +442,7 @@ llvm::Expected<CommentInfo *> getCommentInfo(std::unique_ptr<CommentInfo> &I) {
// the parent block to set it. The template specializations define what to do
// for each supported parent block.
template <typename T, typename TTypeInfo>
llvm::Error addTypeInfo(T I, TTypeInfo &&TI) {
static llvm::Error addTypeInfo(T I, TTypeInfo &&TI) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain TypeInfo");
}
Expand Down Expand Up @@ -472,7 +477,8 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I, TypeInfo &&T) {
return llvm::Error::success();
}

template <typename T> llvm::Error addReference(T I, Reference &&R, FieldId F) {
template <typename T>
static llvm::Error addReference(T I, Reference &&R, FieldId F) {
return llvm::createStringError(llvm::inconvertibleErrorCode(),
"invalid type cannot contain Reference");
}
Expand Down Expand Up @@ -588,7 +594,7 @@ template <> llvm::Error addReference(RecordInfo *I, Reference &&R, FieldId F) {
}

template <typename T, typename ChildInfoType>
void addChild(T I, ChildInfoType &&R) {
static void addChild(T I, ChildInfoType &&R) {
llvm::errs() << "invalid child type for info";
exit(1);
}
Expand Down Expand Up @@ -629,7 +635,7 @@ template <> void addChild(BaseRecordInfo *I, FunctionInfo &&R) {
// TemplateParam children. These go into either a TemplateInfo (for template
// parameters) or TemplateSpecializationInfo (for the specialization's
// parameters).
template <typename T> void addTemplateParam(T I, TemplateParamInfo &&P) {
template <typename T> static void addTemplateParam(T I, TemplateParamInfo &&P) {
llvm::errs() << "invalid container for template parameter";
exit(1);
}
Expand All @@ -642,7 +648,7 @@ void addTemplateParam(TemplateSpecializationInfo *I, TemplateParamInfo &&P) {
}

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

// Template specializations go only into template records.
template <typename T>
void addTemplateSpecialization(T I, TemplateSpecializationInfo &&TSI) {
static void addTemplateSpecialization(T I, TemplateSpecializationInfo &&TSI) {
llvm::errs() << "invalid container for template specialization info";
exit(1);
}
Expand Down
3 changes: 0 additions & 3 deletions clang-tools-extra/clang-doc/Generators.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,6 @@ void Generator::addInfoToIndex(Index &Idx, const doc::Info *Info) {

// This anchor is used to force the linker to link in the generated object file
// and thus register the generators.
extern volatile int YAMLGeneratorAnchorSource;
extern volatile int MDGeneratorAnchorSource;
extern volatile int HTMLGeneratorAnchorSource;
static int LLVM_ATTRIBUTE_UNUSED YAMLGeneratorAnchorDest =
YAMLGeneratorAnchorSource;
static int LLVM_ATTRIBUTE_UNUSED MDGeneratorAnchorDest =
Expand Down
6 changes: 6 additions & 0 deletions clang-tools-extra/clang-doc/Generators.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ findGeneratorByName(llvm::StringRef Format);

std::string getTagType(TagTypeKind AS);

// This anchor is used to force the linker to link in the generated object file
// and thus register the generators.
extern volatile int YAMLGeneratorAnchorSource;
extern volatile int MDGeneratorAnchorSource;
extern volatile int HTMLGeneratorAnchorSource;

} // namespace doc
} // namespace clang

Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/clang-doc/Mapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ namespace doc {
static llvm::StringSet<> USRVisited;
static llvm::sys::SmartMutex<true> USRVisitedGuard;

template <typename T> bool isTypedefAnonRecord(const T *D) {
template <typename T> static bool isTypedefAnonRecord(const T *D) {
if (const auto *C = dyn_cast<CXXRecordDecl>(D)) {
return C->getTypedefNameForAnonDecl();
}
Expand Down
Loading
Loading