[clang-tools-extra] [clang-doc][NFC] Prefer static functions for internal APIs (PR #136391)

Paul Kirth via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 18 17:32:15 PDT 2025


https://github.com/ilovepi updated https://github.com/llvm/llvm-project/pull/136391

>From d160e0734d426ba59f6f7b965580a8670c4601a3 Mon Sep 17 00:00:00 2001
From: Paul Kirth <paulkirth at google.com>
Date: Fri, 18 Apr 2025 17:13:37 -0700
Subject: [PATCH] [clang-doc] Prefer static functions for internal APIs

---
 clang-tools-extra/clang-doc/BitcodeReader.cpp | 128 +++++++++---------
 1 file changed, 67 insertions(+), 61 deletions(-)

diff --git a/clang-tools-extra/clang-doc/BitcodeReader.cpp b/clang-tools-extra/clang-doc/BitcodeReader.cpp
index 1f2fb0a8b2b85..a4d713cb8c064 100644
--- a/clang-tools-extra/clang-doc/BitcodeReader.cpp
+++ b/clang-tools-extra/clang-doc/BitcodeReader.cpp
@@ -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");
@@ -37,12 +38,14 @@ 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");
@@ -50,8 +53,8 @@ llvm::Error decodeRecord(const Record &R, int &Field, llvm::StringRef Blob) {
   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:
@@ -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:
@@ -80,8 +83,8 @@ 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");
@@ -89,8 +92,8 @@ llvm::Error decodeRecord(const Record &R, std::optional<Location> &Field,
   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:
@@ -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:
@@ -122,16 +125,17 @@ 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");
@@ -139,16 +143,16 @@ llvm::Error decodeRecord(const Record &R,
   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);
@@ -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);
@@ -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);
@@ -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);
@@ -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);
@@ -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);
@@ -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);
@@ -280,13 +284,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);
@@ -298,8 +302,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);
@@ -311,8 +315,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);
@@ -342,8 +346,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);
@@ -363,30 +367,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");
 }
@@ -433,7 +438,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");
 }
@@ -468,7 +473,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");
 }
@@ -584,7 +590,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);
 }
@@ -625,7 +631,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);
 }
@@ -638,7 +644,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);
 }
@@ -651,7 +657,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);
 }



More information about the cfe-commits mailing list