[clang-tools-extra] [llvm] Clang doc mustache rebase (PR #133161)

via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 26 13:59:56 PDT 2025


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 2d1517d257fcbd0c9bce14badc7646e94d81ea2b 9dbd1b84d501db2619b716a029e612bca60eef5f --extensions h,cpp -- clang-tools-extra/clang-doc/FileHelpersClangDoc.cpp clang-tools-extra/clang-doc/FileHelpersClangDoc.h clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp llvm/tools/mustache/mustache.cpp clang-tools-extra/clang-doc/Generators.cpp clang-tools-extra/clang-doc/HTMLGenerator.cpp clang-tools-extra/clang-doc/Representation.cpp clang-tools-extra/clang-doc/Representation.h clang-tools-extra/clang-doc/Serialize.cpp clang-tools-extra/clang-doc/Serialize.h clang-tools-extra/clang-doc/tool/ClangDocMain.cpp clang-tools-extra/test/clang-doc/Inputs/basic-project/include/Shape.h
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang-tools-extra/clang-doc/FileHelpersClangDoc.cpp b/clang-tools-extra/clang-doc/FileHelpersClangDoc.cpp
index 50209cfac1..704adcf689 100644
--- a/clang-tools-extra/clang-doc/FileHelpersClangDoc.cpp
+++ b/clang-tools-extra/clang-doc/FileHelpersClangDoc.cpp
@@ -12,8 +12,7 @@
 namespace clang {
 namespace doc {
 
-llvm::Error
-copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory) {
+llvm::Error copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory) {
   llvm::SmallString<128> PathWrite;
   llvm::sys::path::native(OutDirectory, PathWrite);
   llvm::sys::path::append(PathWrite, llvm::sys::path::filename(FilePath));
@@ -30,14 +29,13 @@ copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory) {
   return llvm::Error::success();
 }
 
-
 llvm::SmallString<128> computeRelativePath(llvm::StringRef Destination,
-                                                  llvm::StringRef Origin) {
+                                           llvm::StringRef Origin) {
   // If Origin is empty, the relative path to the Destination is its complete
   // path.
   if (Origin.empty())
     return Destination;
-  
+
   // The relative path is an empty path if both directories are the same.
   if (Destination == Origin)
     return {};
diff --git a/clang-tools-extra/clang-doc/FileHelpersClangDoc.h b/clang-tools-extra/clang-doc/FileHelpersClangDoc.h
index 9072a7bd08..997bbea63d 100644
--- a/clang-tools-extra/clang-doc/FileHelpersClangDoc.h
+++ b/clang-tools-extra/clang-doc/FileHelpersClangDoc.h
@@ -14,11 +14,10 @@
 namespace clang {
 namespace doc {
 
-llvm::Error 
-copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory);
+llvm::Error copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory);
 
-llvm::SmallString<128> 
-computeRelativePath(llvm::StringRef Destination,llvm::StringRef Origin);
+llvm::SmallString<128> computeRelativePath(llvm::StringRef Destination,
+                                           llvm::StringRef Origin);
 
 } // namespace doc
 } // namespace clang
diff --git a/clang-tools-extra/clang-doc/HTMLGenerator.cpp b/clang-tools-extra/clang-doc/HTMLGenerator.cpp
index 6b0efc9d4f..1f9b53b0c7 100644
--- a/clang-tools-extra/clang-doc/HTMLGenerator.cpp
+++ b/clang-tools-extra/clang-doc/HTMLGenerator.cpp
@@ -512,8 +512,8 @@ writeFileDefinition(const Location &L,
           llvm::sys::path::Style::windows));
   auto Node = std::make_unique<TagNode>(HTMLTag::TAG_P);
   Node->Children.emplace_back(std::make_unique<TextNode>("Defined at line "));
-  auto LocNumberNode =
-      std::make_unique<TagNode>(HTMLTag::TAG_A, std::to_string(L.StartLineNumber));
+  auto LocNumberNode = std::make_unique<TagNode>(
+      HTMLTag::TAG_A, std::to_string(L.StartLineNumber));
   // The links to a specific line in the source code use the github /
   // googlesource notation so it won't work for all hosting pages.
   // FIXME: we probably should have a configuration setting for line number
@@ -1146,8 +1146,7 @@ static llvm::Error genIndex(const ClangDocContext &CDCtx) {
   return llvm::Error::success();
 }
 
-static llvm::Error 
-copyFile(StringRef FilePath, StringRef OutDirectory) {
+static llvm::Error copyFile(StringRef FilePath, StringRef OutDirectory) {
   llvm::SmallString<128> PathWrite;
   llvm::sys::path::native(OutDirectory, PathWrite);
   llvm::sys::path::append(PathWrite, llvm::sys::path::filename(FilePath));
diff --git a/clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp b/clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp
index 1f96202f1f..67f37a2bbe 100644
--- a/clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp
+++ b/clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp
@@ -5,9 +5,9 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 //
 //===----------------------------------------------------------------------===//
+#include "FileHelpersClangDoc.h"
 #include "Generators.h"
 #include "Representation.h"
-#include "FileHelpersClangDoc.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/Mustache.h"
 
@@ -18,7 +18,6 @@ using namespace llvm::mustache;
 namespace clang {
 namespace doc {
 
-
 class MustacheHTMLGenerator : public Generator {
 public:
   static const char *Format;
@@ -28,16 +27,15 @@ public:
   llvm::Error createResources(ClangDocContext &CDCtx) override;
   llvm::Error generateDocForInfo(Info *I, llvm::raw_ostream &OS,
                                  const ClangDocContext &CDCtx) override;
-  
 };
 
 class MustacheTemplateFile : public Template {
 public:
-  static ErrorOr<std::unique_ptr<MustacheTemplateFile>> createMustacheFile
-      (StringRef FileName) {
+  static ErrorOr<std::unique_ptr<MustacheTemplateFile>>
+  createMustacheFile(StringRef FileName) {
     ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrError =
         MemoryBuffer::getFile(FileName);
-    
+
     if (auto EC = BufferOrError.getError()) {
       return EC;
     }
@@ -45,7 +43,7 @@ public:
     llvm::StringRef FileContent = Buffer->getBuffer();
     return std::make_unique<MustacheTemplateFile>(FileContent);
   }
-  
+
   Error registerPartialFile(StringRef Name, StringRef FileName) {
     ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrError =
         MemoryBuffer::getFile(FileName);
@@ -64,11 +62,10 @@ static std::unique_ptr<MustacheTemplateFile> NamespaceTemplate = nullptr;
 
 static std::unique_ptr<MustacheTemplateFile> RecordTemplate = nullptr;
 
-
-llvm::Error setupTemplate(
-    std::unique_ptr<MustacheTemplateFile> &Template,
-    StringRef TemplatePath,
-    std::vector<std::pair<StringRef, StringRef>> Partials) {
+llvm::Error
+setupTemplate(std::unique_ptr<MustacheTemplateFile> &Template,
+              StringRef TemplatePath,
+              std::vector<std::pair<StringRef, StringRef>> Partials) {
   auto T = MustacheTemplateFile::createMustacheFile(TemplatePath);
   if (auto EC = T.getError())
     return llvm::createFileError("cannot open file", EC);
@@ -81,8 +78,7 @@ llvm::Error setupTemplate(
   return llvm::Error::success();
 }
 
-llvm::Error 
-setupTemplateFiles(const clang::doc::ClangDocContext &CDCtx) {
+llvm::Error setupTemplateFiles(const clang::doc::ClangDocContext &CDCtx) {
   auto NamespaceFilePath = CDCtx.MustacheTemplates.lookup("namespace-template");
   auto ClassFilePath = CDCtx.MustacheTemplates.lookup("class-template");
   auto CommentFilePath = CDCtx.MustacheTemplates.lookup("comments-template");
@@ -91,26 +87,23 @@ setupTemplateFiles(const clang::doc::ClangDocContext &CDCtx) {
   std::vector<std::pair<StringRef, StringRef>> Partials = {
       {"Comments", CommentFilePath},
       {"FunctionPartial", FunctionFilePath},
-      {"EnumPartial", EnumFilePath}
-  };
-  
+      {"EnumPartial", EnumFilePath}};
+
   auto Err = setupTemplate(NamespaceTemplate, NamespaceFilePath, Partials);
   if (Err)
     return Err;
-  
+
   Err = setupTemplate(RecordTemplate, ClassFilePath, Partials);
-  
+
   if (Err)
     return Err;
-  
+
   return llvm::Error::success();
 }
 
-
-llvm::Error 
-MustacheHTMLGenerator::generateDocs(llvm::StringRef RootDir, 
-                                    llvm::StringMap<std::unique_ptr<doc::Info>> Infos, 
-                                    const clang::doc::ClangDocContext &CDCtx) {
+llvm::Error MustacheHTMLGenerator::generateDocs(
+    llvm::StringRef RootDir, llvm::StringMap<std::unique_ptr<doc::Info>> Infos,
+    const clang::doc::ClangDocContext &CDCtx) {
   if (auto Err = setupTemplateFiles(CDCtx))
     return Err;
   // Track which directories we already tried to create.
@@ -119,7 +112,7 @@ MustacheHTMLGenerator::generateDocs(llvm::StringRef RootDir,
   llvm::StringMap<std::vector<doc::Info *>> FileToInfos;
   for (const auto &Group : Infos) {
     doc::Info *Info = Group.getValue().get();
-    
+
     llvm::SmallString<128> Path;
     llvm::sys::path::native(RootDir, Path);
     llvm::sys::path::append(Path, Info->getRelativeFilePath(""));
@@ -134,7 +127,7 @@ MustacheHTMLGenerator::generateDocs(llvm::StringRef RootDir,
     llvm::sys::path::append(Path, Info->getFileBaseName() + ".html");
     FileToInfos[Path].push_back(Info);
   }
-  
+
   for (const auto &Group : FileToInfos) {
     std::error_code FileErr;
     llvm::raw_fd_ostream InfoOS(Group.getKey(), FileErr,
@@ -142,7 +135,7 @@ MustacheHTMLGenerator::generateDocs(llvm::StringRef RootDir,
     if (FileErr)
       return llvm::createStringError(FileErr, "Error opening file '%s'",
                                      Group.getKey().str().c_str());
-    
+
     for (const auto &Info : Group.getValue()) {
       if (llvm::Error Err = generateDocForInfo(Info, InfoOS, CDCtx))
         return Err;
@@ -151,12 +144,12 @@ MustacheHTMLGenerator::generateDocs(llvm::StringRef RootDir,
   return llvm::Error::success();
 }
 
-Value extractValue(const Location &L, 
+Value extractValue(const Location &L,
                    std::optional<StringRef> RepositoryUrl = std::nullopt) {
   Object Obj = Object();
   Obj.insert({"LineNumber", L.LineNumber});
   Obj.insert({"Filename", L.Filename});
-  
+
   if (!L.IsFileInRootDir || !RepositoryUrl) {
     return Obj;
   }
@@ -164,7 +157,7 @@ Value extractValue(const Location &L,
   llvm::sys::path::append(FileURL, llvm::sys::path::Style::posix, L.Filename);
   FileURL += "#" + std::to_string(L.LineNumber);
   Obj.insert({"FileURL", FileURL});
-  
+
   return Obj;
 }
 
@@ -180,7 +173,6 @@ Value extractValue(const Reference &I, StringRef CurrentDirectory) {
   return Obj;
 }
 
-
 Value extractValue(const TypedefInfo &I) {
   // Not Supported
   return nullptr;
@@ -189,17 +181,17 @@ Value extractValue(const TypedefInfo &I) {
 Value extractValue(const CommentInfo &I) {
   Object Obj = Object();
   Value Child = Object();
-  
+
   if (I.Kind == "FullComment") {
     Value ChildArr = Array();
-    for (const auto& C: I.Children)
+    for (const auto &C : I.Children)
       ChildArr.getAsArray()->emplace_back(extractValue(*C));
     Child.getAsObject()->insert({"Children", ChildArr});
     Obj.insert({"FullComment", Child});
   }
   if (I.Kind == "ParagraphComment") {
     Value ChildArr = Array();
-    for (const auto& C: I.Children)
+    for (const auto &C : I.Children)
       ChildArr.getAsArray()->emplace_back(extractValue(*C));
     Child.getAsObject()->insert({"Children", ChildArr});
     Obj.insert({"ParagraphComment", Child});
@@ -207,14 +199,14 @@ Value extractValue(const CommentInfo &I) {
   if (I.Kind == "BlockCommandComment") {
     Child.getAsObject()->insert({"Command", I.Name});
     Value ChildArr = Array();
-    for (const auto& C: I.Children)
+    for (const auto &C : I.Children)
       ChildArr.getAsArray()->emplace_back(extractValue(*C));
     Child.getAsObject()->insert({"Children", ChildArr});
     Obj.insert({"BlockCommandComment", Child});
   }
   if (I.Kind == "TextComment")
     Obj.insert({"TextComment", I.Text});
-  
+
   return Obj;
 }
 
@@ -225,30 +217,30 @@ Value extractValue(const FunctionInfo &I, StringRef ParentInfoDir,
   Obj.insert({"ID", llvm::toHex(llvm::toStringRef(I.USR))});
   Obj.insert({"Access", getAccessSpelling(I.Access).str()});
   Obj.insert({"ReturnType", extractValue(I.ReturnType.Type, ParentInfoDir)});
-  
+
   Value ParamArr = Array();
   for (const auto Val : llvm::enumerate(I.Params)) {
     Value V = Object();
     V.getAsObject()->insert({"Name", Val.value().Name});
     V.getAsObject()->insert({"Type", Val.value().Type.Name});
-    V.getAsObject()->insert({"End",  Val.index() + 1 == I.Params.size()});
+    V.getAsObject()->insert({"End", Val.index() + 1 == I.Params.size()});
     ParamArr.getAsArray()->emplace_back(V);
   }
   Obj.insert({"Params", ParamArr});
-  
+
   if (!I.Description.empty()) {
     Value ArrDesc = Array();
-    for (const CommentInfo& Child : I.Description) 
+    for (const CommentInfo &Child : I.Description)
       ArrDesc.getAsArray()->emplace_back(extractValue(Child));
     Obj.insert({"FunctionComments", ArrDesc});
   }
   if (I.DefLoc.has_value()) {
     Location L = *I.DefLoc;
     if (CDCtx.RepositoryUrl.has_value())
-      Obj.insert({"Location", extractValue(L,
-                                           StringRef{*CDCtx.RepositoryUrl})});
+      Obj.insert(
+          {"Location", extractValue(L, StringRef{*CDCtx.RepositoryUrl})});
     else
-      Obj.insert({"Location", extractValue(L)});  
+      Obj.insert({"Location", extractValue(L)});
   }
   return Obj;
 }
@@ -264,66 +256,66 @@ Value extractValue(const EnumInfo &I, const ClangDocContext &CDCtx) {
   Obj.insert({"HasComment", HasComment});
   Obj.insert({"ID", llvm::toHex(llvm::toStringRef(I.USR))});
   Value Arr = Array();
-  for (const EnumValueInfo& M: I.Members) {
+  for (const EnumValueInfo &M : I.Members) {
     Value EnumValue = Object();
     EnumValue.getAsObject()->insert({"Name", M.Name});
     if (!M.ValueExpr.empty())
       EnumValue.getAsObject()->insert({"ValueExpr", M.ValueExpr});
     else
       EnumValue.getAsObject()->insert({"Value", M.Value});
-    
+
     if (!M.Description.empty()) {
       Value ArrDesc = Array();
-      for (const CommentInfo& Child : M.Description) 
+      for (const CommentInfo &Child : M.Description)
         ArrDesc.getAsArray()->emplace_back(extractValue(Child));
       EnumValue.getAsObject()->insert({"EnumValueComments", ArrDesc});
     }
     Arr.getAsArray()->emplace_back(EnumValue);
   }
   Obj.insert({"EnumValues", Arr});
-  
+
   if (!I.Description.empty()) {
     Value ArrDesc = Array();
-    for (const CommentInfo& Child : I.Description) 
+    for (const CommentInfo &Child : I.Description)
       ArrDesc.getAsArray()->emplace_back(extractValue(Child));
     Obj.insert({"EnumComments", ArrDesc});
   }
-  
+
   if (I.DefLoc.has_value()) {
     Location L = *I.DefLoc;
     if (CDCtx.RepositoryUrl.has_value())
-      Obj.insert({"Location", extractValue(L,
-                                           StringRef{*CDCtx.RepositoryUrl})});
+      Obj.insert(
+          {"Location", extractValue(L, StringRef{*CDCtx.RepositoryUrl})});
     else
-      Obj.insert({"Location", extractValue(L)});  
+      Obj.insert({"Location", extractValue(L)});
   }
-  
+
   return Obj;
 }
 
-void extractScopeChildren(const ScopeChildren &S, Object &Obj, 
+void extractScopeChildren(const ScopeChildren &S, Object &Obj,
                           StringRef ParentInfoDir,
                           const ClangDocContext &CDCtx) {
   Value ArrNamespace = Array();
-  for (const Reference& Child : S.Namespaces)
+  for (const Reference &Child : S.Namespaces)
     ArrNamespace.getAsArray()->emplace_back(extractValue(Child, ParentInfoDir));
-  
+
   if (!ArrNamespace.getAsArray()->empty())
     Obj.insert({"Namespace", Object{{"Links", ArrNamespace}}});
-  
+
   Value ArrRecord = Array();
-  for (const Reference& Child : S.Records)
+  for (const Reference &Child : S.Records)
     ArrRecord.getAsArray()->emplace_back(extractValue(Child, ParentInfoDir));
-  
+
   if (!ArrRecord.getAsArray()->empty())
     Obj.insert({"Record", Object{{"Links", ArrRecord}}});
-  
+
   Value ArrFunction = Array();
   Value PublicFunction = Array();
   Value ProtectedFunction = Array();
   Value PrivateFunction = Array();
-  
-  for (const FunctionInfo& Child : S.Functions) {
+
+  for (const FunctionInfo &Child : S.Functions) {
     Value F = extractValue(Child, ParentInfoDir, CDCtx);
     AccessSpecifier Access = Child.Access;
     if (Access == AccessSpecifier::AS_public)
@@ -332,30 +324,29 @@ void extractScopeChildren(const ScopeChildren &S, Object &Obj,
       ProtectedFunction.getAsArray()->emplace_back(F);
     else
       ArrFunction.getAsArray()->emplace_back(F);
-  }  
+  }
   if (!ArrFunction.getAsArray()->empty())
     Obj.insert({"Function", Object{{"Obj", ArrFunction}}});
-  
+
   if (!PublicFunction.getAsArray()->empty())
     Obj.insert({"PublicFunction", Object{{"Obj", PublicFunction}}});
-  
+
   if (!ProtectedFunction.getAsArray()->empty())
     Obj.insert({"ProtectedFunction", Object{{"Obj", ProtectedFunction}}});
-  
-  
+
   Value ArrEnum = Array();
-  for (const EnumInfo& Child : S.Enums)
+  for (const EnumInfo &Child : S.Enums)
     ArrEnum.getAsArray()->emplace_back(extractValue(Child, CDCtx));
-  
+
   if (!ArrEnum.getAsArray()->empty())
-    Obj.insert({"Enums", Object{{"Obj", ArrEnum }}});
-  
+    Obj.insert({"Enums", Object{{"Obj", ArrEnum}}});
+
   Value ArrTypedefs = Array();
-  for (const TypedefInfo& Child : S.Typedefs) 
+  for (const TypedefInfo &Child : S.Typedefs)
     ArrTypedefs.getAsArray()->emplace_back(extractValue(Child));
-  
+
   if (!ArrTypedefs.getAsArray()->empty())
-    Obj.insert({"Typedefs", Object{{"Obj", ArrTypedefs }}});
+    Obj.insert({"Typedefs", Object{{"Obj", ArrTypedefs}}});
 }
 
 Value extractValue(const NamespaceInfo &I, const ClangDocContext &CDCtx) {
@@ -364,17 +355,17 @@ Value extractValue(const NamespaceInfo &I, const ClangDocContext &CDCtx) {
   if (I.Name.str() == "")
     InfoTitle = "Global Namespace";
   else
-    InfoTitle = ("namespace " + I.Name).str();  
-  
+    InfoTitle = ("namespace " + I.Name).str();
+
   StringRef BasePath = I.getRelativeFilePath("");
   NamespaceValue.insert({"NamespaceTitle", InfoTitle});
   NamespaceValue.insert({"NamespacePath", I.getRelativeFilePath("")});
-  
+
   if (!I.Description.empty()) {
     Value ArrDesc = Array();
-    for (const CommentInfo& Child : I.Description) 
+    for (const CommentInfo &Child : I.Description)
       ArrDesc.getAsArray()->emplace_back(extractValue(Child));
-    NamespaceValue.insert({"NamespaceComments", ArrDesc });
+    NamespaceValue.insert({"NamespaceComments", ArrDesc});
   }
   extractScopeChildren(I.Children, NamespaceValue, BasePath, CDCtx);
   return NamespaceValue;
@@ -382,42 +373,42 @@ Value extractValue(const NamespaceInfo &I, const ClangDocContext &CDCtx) {
 
 Value extractValue(const RecordInfo &I, const ClangDocContext &CDCtx) {
   Object RecordValue = Object();
-  
+
   if (!I.Description.empty()) {
     Value ArrDesc = Array();
-    for (const CommentInfo& Child : I.Description) 
+    for (const CommentInfo &Child : I.Description)
       ArrDesc.getAsArray()->emplace_back(extractValue(Child));
-    RecordValue.insert({"RecordComments", ArrDesc });
+    RecordValue.insert({"RecordComments", ArrDesc});
   }
   RecordValue.insert({"Name", I.Name});
   RecordValue.insert({"FullName", I.FullName});
   RecordValue.insert({"RecordType", getTagType(I.TagType)});
-  
+
   if (I.DefLoc.has_value()) {
     Location L = *I.DefLoc;
     if (CDCtx.RepositoryUrl.has_value())
-      RecordValue.insert({"Location", extractValue(L,
-                                                   StringRef{*CDCtx.RepositoryUrl})});
+      RecordValue.insert(
+          {"Location", extractValue(L, StringRef{*CDCtx.RepositoryUrl})});
     else
-      RecordValue.insert({"Location", extractValue(L)});  
+      RecordValue.insert({"Location", extractValue(L)});
   }
-  
+
   StringRef BasePath = I.getRelativeFilePath("");
   extractScopeChildren(I.Children, RecordValue, BasePath, CDCtx);
   Value PublicMembers = Array();
   Value ProtectedMembers = Array();
   Value PrivateMembers = Array();
-  for (const MemberTypeInfo &Member : I.Members ) {
+  for (const MemberTypeInfo &Member : I.Members) {
     Value MemberValue = Object();
     MemberValue.getAsObject()->insert({"Name", Member.Name});
     MemberValue.getAsObject()->insert({"Type", Member.Type.Name});
     if (!Member.Description.empty()) {
       Value ArrDesc = Array();
-      for (const CommentInfo& Child : Member.Description) 
+      for (const CommentInfo &Child : Member.Description)
         ArrDesc.getAsArray()->emplace_back(extractValue(Child));
-      MemberValue.getAsObject()->insert({"MemberComments", ArrDesc });
+      MemberValue.getAsObject()->insert({"MemberComments", ArrDesc});
     }
-    
+
     if (Member.Access == AccessSpecifier::AS_public)
       PublicMembers.getAsArray()->emplace_back(MemberValue);
     else if (Member.Access == AccessSpecifier::AS_protected)
@@ -431,7 +422,7 @@ Value extractValue(const RecordInfo &I, const ClangDocContext &CDCtx) {
     RecordValue.insert({"ProtectedMembers", Object{{"Obj", ProtectedMembers}}});
   if (!PrivateMembers.getAsArray()->empty())
     RecordValue.insert({"PrivateMembers", Object{{"Obj", PrivateMembers}}});
-  
+
   return RecordValue;
 }
 
@@ -440,7 +431,7 @@ void setupTemplateValue(const ClangDocContext &CDCtx, Value &V, Info *I) {
   Value StylesheetArr = Array();
   auto InfoPath = I->getRelativeFilePath("");
   SmallString<128> RelativePath = computeRelativePath("", InfoPath);
-  for (const auto &FilePath  : CDCtx.UserStylesheets) {
+  for (const auto &FilePath : CDCtx.UserStylesheets) {
     SmallString<128> StylesheetPath = RelativePath;
     llvm::sys::path::append(StylesheetPath,
                             llvm::sys::path::filename(FilePath));
@@ -448,7 +439,7 @@ void setupTemplateValue(const ClangDocContext &CDCtx, Value &V, Info *I) {
     StylesheetArr.getAsArray()->emplace_back(StylesheetPath);
   }
   V.getAsObject()->insert({"Stylesheets", StylesheetArr});
-  
+
   Value ScriptArr = Array();
   for (auto Script : CDCtx.JsScripts) {
     SmallString<128> JsPath = RelativePath;
@@ -457,7 +448,6 @@ void setupTemplateValue(const ClangDocContext &CDCtx, Value &V, Info *I) {
   }
   V.getAsObject()->insert({"Scripts", ScriptArr});
 }
- 
 
 llvm::Error
 MustacheHTMLGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS,
@@ -474,10 +464,10 @@ MustacheHTMLGenerator::generateDocForInfo(Info *I, llvm::raw_ostream &OS,
     setupTemplateValue(CDCtx, V, I);
     // Serialize the JSON value to the output stream in a readable format.
     llvm::outs() << "Visit: " << I->Name << "\n";
-    //llvm::outs() << llvm::formatv("{0:2}", V) << "\n";
+    // llvm::outs() << llvm::formatv("{0:2}", V) << "\n";
     llvm::outs() << RecordTemplate->render(V);
     break;
-  }  
+  }
   case InfoType::IT_enum:
     llvm::outs() << "IT_enum\n";
     break;
@@ -511,9 +501,8 @@ llvm::Error MustacheHTMLGenerator::createResources(ClangDocContext &CDCtx) {
 
 const char *MustacheHTMLGenerator::Format = "mhtml";
 
-
-static GeneratorRegistry::Add<MustacheHTMLGenerator> MHTML(MustacheHTMLGenerator::Format,
-                                                           "Generator for mustache HTML output.");
+static GeneratorRegistry::Add<MustacheHTMLGenerator>
+    MHTML(MustacheHTMLGenerator::Format, "Generator for mustache HTML output.");
 
 // This anchor is used to force the linker to link in the generated object
 // file and thus register the generator.
diff --git a/clang-tools-extra/clang-doc/Representation.h b/clang-tools-extra/clang-doc/Representation.h
index 84a647cbe8..f6dc323187 100644
--- a/clang-tools-extra/clang-doc/Representation.h
+++ b/clang-tools-extra/clang-doc/Representation.h
@@ -62,10 +62,10 @@ struct CommentInfo {
 
   SmallString<16>
       Kind; // Kind of comment (FullComment, ParagraphComment, TextComment,
-                             // InlineCommandComment, HTMLStartTagComment, HTMLEndTagComment,
-                             // BlockCommandComment, ParamCommandComment,
-                             // TParamCommandComment, VerbatimBlockComment,
-                             // VerbatimBlockLineComment, VerbatimLineComment).
+            // InlineCommandComment, HTMLStartTagComment, HTMLEndTagComment,
+            // BlockCommandComment, ParamCommandComment,
+            // TParamCommandComment, VerbatimBlockComment,
+            // VerbatimBlockLineComment, VerbatimLineComment).
   SmallString<64> Text;      // Text of the comment.
   SmallString<16> Name;      // Name of the comment (for Verbatim and HTML).
   SmallString<8> Direction;  // Parameter direction (for (T)ParamCommand).
@@ -73,7 +73,7 @@ struct CommentInfo {
   SmallString<16> CloseName; // Closing tag name (for VerbatimBlock).
   bool SelfClosing = false;  // Indicates if tag is self-closing (for HTML).
   bool Explicit = false; // Indicates if the direction of a param is explicit
-                             // (for (T)ParamCommand).
+                         // (for (T)ParamCommand).
   llvm::SmallVector<SmallString<16>, 4>
       AttrKeys; // List of attribute keys (for HTML).
   llvm::SmallVector<SmallString<16>, 4>
@@ -113,8 +113,7 @@ struct Reference {
   llvm::SmallString<16> getFileBaseName() const;
 
   SymbolID USR = SymbolID(); // Unique identifier for referenced decl
-  
-  
+
   // Name of type (possibly unresolved). Not including namespaces or template
   // parameters (so for a std::vector<int> this would be "vector"). See also
   // QualName.
@@ -153,9 +152,9 @@ struct ScopeChildren {
 
 // A base struct for TypeInfos
 struct TypeInfo {
-  
+
   TypeInfo() = default;
-  
+
   TypeInfo(const Reference &R) : Type(R) {}
 
   // Convenience constructor for when there is no symbol ID or info type
@@ -164,9 +163,9 @@ struct TypeInfo {
       : Type(SymbolID(), Name, InfoType::IT_default, Name, Path) {}
 
   bool operator==(const TypeInfo &Other) const { return Type == Other.Type; }
-  
+
   Reference Type; // Referenced type in this info.
-  
+
   bool IsTemplate = false;
   bool IsBuiltIn = false;
 };
@@ -215,7 +214,6 @@ struct FieldTypeInfo : public TypeInfo {
     return std::tie(Type, Name, DefaultValue) ==
            std::tie(Other.Type, Other.Name, Other.DefaultValue);
   }
-  
 
   SmallString<16> Name; // Name associated with this info.
 
@@ -245,14 +243,10 @@ struct MemberTypeInfo : public FieldTypeInfo {
 };
 
 struct Location {
-  Location(int StartLineNumber = 0, 
-           int EndLineNumber = 0,
-           StringRef Filename = StringRef(),
-           bool IsFileInRootDir = false)
-      : StartLineNumber(StartLineNumber),
-        EndLineNumber(EndLineNumber),
-        Filename(Filename),
-        IsFileInRootDir(IsFileInRootDir) {}
+  Location(int StartLineNumber = 0, int EndLineNumber = 0,
+           StringRef Filename = StringRef(), bool IsFileInRootDir = false)
+      : StartLineNumber(StartLineNumber), EndLineNumber(EndLineNumber),
+        Filename(Filename), IsFileInRootDir(IsFileInRootDir) {}
 
   bool operator==(const Location &Other) const {
     return std::tie(StartLineNumber, EndLineNumber, Filename) ==
@@ -371,7 +365,7 @@ struct FunctionInfo : public SymbolInfo {
   // Full qualified name of this function, including namespaces and template
   // specializations.
   SmallString<16> FullName;
-  
+
   // Function Prototype
   SmallString<256> ProtoType;
 
@@ -394,7 +388,7 @@ struct RecordInfo : public SymbolInfo {
   // Full qualified name of this record, including namespaces and template
   // specializations.
   SmallString<16> FullName;
-  
+
   // When present, this record is a template or specialization.
   std::optional<TemplateInfo> Template;
 
@@ -434,8 +428,8 @@ struct TypedefInfo : public SymbolInfo {
   // False means it's a C-style typedef:
   //   typedef std::vector<int> MyVector;
   bool IsUsing = false;
-  
-  std::vector<CommentInfo> Description; 
+
+  std::vector<CommentInfo> Description;
 };
 
 struct BaseRecordInfo : public RecordInfo {
@@ -473,9 +467,9 @@ struct EnumValueInfo {
   // Stores the user-supplied initialization expression for this enumeration
   // constant. This will be empty for implicit enumeration values.
   SmallString<16> ValueExpr;
-  
+
   /// Comment description of this field.
-  std::vector<CommentInfo> Description; 
+  std::vector<CommentInfo> Description;
 };
 
 // TODO: Expand to allow for documenting templating.
diff --git a/clang-tools-extra/clang-doc/Serialize.cpp b/clang-tools-extra/clang-doc/Serialize.cpp
index d4d1436646..c2ba7a3a16 100644
--- a/clang-tools-extra/clang-doc/Serialize.cpp
+++ b/clang-tools-extra/clang-doc/Serialize.cpp
@@ -8,10 +8,10 @@
 
 #include "Serialize.h"
 #include "BitcodeWriter.h"
+#include "clang/AST/Attr.h"
 #include "clang/AST/Comment.h"
 #include "clang/Index/USRGeneration.h"
 #include "clang/Lex/Lexer.h"
-#include "clang/AST/Attr.h"
 #include "llvm/ADT/Hashing.h"
 #include "llvm/ADT/StringExtras.h"
 #include "llvm/Support/SHA1.h"
@@ -33,10 +33,10 @@ populateParentNamespaces(llvm::SmallVector<Reference, 4> &Namespaces,
 
 static void populateMemberTypeInfo(MemberTypeInfo &I, const FieldDecl *D);
 
-void getTemplateParameters(const TemplateParameterList *TemplateParams, 
+void getTemplateParameters(const TemplateParameterList *TemplateParams,
                            llvm::raw_ostream &Stream) {
   Stream << "template <";
-  
+
   for (unsigned i = 0; i < TemplateParams->size(); ++i) {
     if (i > 0) {
       Stream << ", ";
@@ -53,13 +53,15 @@ void getTemplateParameters(const TemplateParameterList *TemplateParams,
         Stream << "...";
       }
       Stream << " " << TTP->getNameAsString();
-    } else if (const auto *NTTP = llvm::dyn_cast<NonTypeTemplateParmDecl>(Param)) {
+    } else if (const auto *NTTP =
+                   llvm::dyn_cast<NonTypeTemplateParmDecl>(Param)) {
       NTTP->getType().print(Stream, NTTP->getASTContext().getPrintingPolicy());
       if (NTTP->isParameterPack()) {
         Stream << "...";
       }
       Stream << " " << NTTP->getNameAsString();
-    } else if (const auto *TTPD = llvm::dyn_cast<TemplateTemplateParmDecl>(Param)) {
+    } else if (const auto *TTPD =
+                   llvm::dyn_cast<TemplateTemplateParmDecl>(Param)) {
       Stream << "template <";
       getTemplateParameters(TTPD->getTemplateParameters(), Stream);
       Stream << "> class " << TTPD->getNameAsString();
@@ -69,12 +71,12 @@ void getTemplateParameters(const TemplateParameterList *TemplateParams,
   Stream << "> ";
 }
 
-// Extract the full function prototype from a FunctionDecl including 
+// Extract the full function prototype from a FunctionDecl including
 // Full Decl
 llvm::SmallString<256> getFunctionPrototype(const FunctionDecl *FuncDecl) {
-  llvm::SmallString<256> Result; 
+  llvm::SmallString<256> Result;
   llvm::raw_svector_ostream Stream(Result);
-  const ASTContext& Ctx = FuncDecl->getASTContext();
+  const ASTContext &Ctx = FuncDecl->getASTContext();
   const auto *Method = llvm::dyn_cast<CXXMethodDecl>(FuncDecl);
   // If it's a templated function, handle the template parameters
   if (const auto *TmplDecl = FuncDecl->getDescribedTemplate()) {
@@ -82,8 +84,7 @@ llvm::SmallString<256> getFunctionPrototype(const FunctionDecl *FuncDecl) {
   }
   // If it's a virtual method
   if (Method) {
-    if (Method->isVirtual())
-    {
+    if (Method->isVirtual()) {
       Stream << "virtual ";
     }
   }
@@ -135,7 +136,7 @@ llvm::SmallString<256> getFunctionPrototype(const FunctionDecl *FuncDecl) {
       Stream << " final";
     if (Method->isConst())
       Stream << " const";
-    if (Method->isPureVirtual()) 
+    if (Method->isPureVirtual())
       Stream << " = 0";
   }
   return Result; // Convert SmallString to std::string for return
@@ -144,7 +145,7 @@ llvm::SmallString<256> getFunctionPrototype(const FunctionDecl *FuncDecl) {
 llvm::SmallString<16> getTypeDefDecl(const TypedefDecl *TypeDef) {
   llvm::SmallString<16> Result;
   llvm::raw_svector_ostream Stream(Result);
-  const ASTContext& Ctx = TypeDef->getASTContext();
+  const ASTContext &Ctx = TypeDef->getASTContext();
   Stream << "typedef ";
   QualType Q = TypeDef->getUnderlyingType();
   Q.print(Stream, Ctx.getPrintingPolicy());
@@ -155,16 +156,14 @@ llvm::SmallString<16> getTypeDefDecl(const TypedefDecl *TypeDef) {
 llvm::SmallString<16> getTypeAlias(const TypeAliasDecl *Alias) {
   llvm::SmallString<16> Result;
   llvm::raw_svector_ostream Stream(Result);
-  const ASTContext& Ctx = Alias->getASTContext();
+  const ASTContext &Ctx = Alias->getASTContext();
   if (const auto *TmplDecl = Alias->getDescribedTemplate()) {
     getTemplateParameters(TmplDecl->getTemplateParameters(), Stream);
   }
-  Stream << "using " 
-         << Alias->getNameAsString() 
-         << " = ";
+  Stream << "using " << Alias->getNameAsString() << " = ";
   QualType Q = Alias->getUnderlyingType();
   Q.print(Stream, Ctx.getPrintingPolicy());
-  
+
   return Result;
 }
 
@@ -181,7 +180,8 @@ llvm::SmallString<16> getRecordPrototype(const CXXRecordDecl *CXXRD) {
     OS << "template <";
     bool FirstParam = true;
     for (const auto *Param : *TD->getTemplateParameters()) {
-      if (!FirstParam) OS << ", ";
+      if (!FirstParam)
+        OS << ", ";
       Param->print(OS, Policy);
       FirstParam = false;
     }
@@ -199,8 +199,10 @@ llvm::SmallString<16> getRecordPrototype(const CXXRecordDecl *CXXRD) {
     OS << " : ";
     bool FirstBase = true;
     for (const auto &Base : CXXRD->bases()) {
-      if (!FirstBase) OS << ", ";
-      if (Base.isVirtual()) OS << "virtual ";
+      if (!FirstBase)
+        OS << ", ";
+      if (Base.isVirtual())
+        OS << "virtual ";
       OS << getAccessSpelling(Base.getAccessSpecifier()) << " ";
       OS << Base.getType().getAsString(Policy);
       FirstBase = false;
@@ -209,7 +211,6 @@ llvm::SmallString<16> getRecordPrototype(const CXXRecordDecl *CXXRD) {
   return Result;
 }
 
-
 // A function to extract the appropriate relative path for a given info's
 // documentation. The path returned is a composite of the parent namespaces.
 //
@@ -406,7 +407,8 @@ static QualType getBaseQualType(const QualType &T) {
   QualType QT = T;
   // Get the base type of the QualType
   // eg. int* -> int, int& -> int, const int -> int
-  bool Modified = true;  // Track whether we've modified `qt` in this loop iteration
+  bool Modified =
+      true; // Track whether we've modified `qt` in this loop iteration
   while (Modified) {
     Modified = false;
     // If it's a reference type, strip the reference
@@ -418,8 +420,8 @@ static QualType getBaseQualType(const QualType &T) {
     else if (QT->isPointerType()) {
       QT = QT->getPointeeType();
       Modified = true;
-    }
-    else if (const auto *ElaboratedType = QT->getAs<clang::ElaboratedType>()) {
+    } else if (const auto *ElaboratedType =
+                   QT->getAs<clang::ElaboratedType>()) {
       QT = ElaboratedType->desugar();
       Modified = true;
     }
@@ -427,12 +429,11 @@ static QualType getBaseQualType(const QualType &T) {
     else if (QT.hasQualifiers()) {
       QT = QT.getUnqualifiedType();
       Modified = true;
-    }
-    else if (const auto *TypedefType = QT->getAs<clang::TypedefType>()) {
+    } else if (const auto *TypedefType = QT->getAs<clang::TypedefType>()) {
       return QT;
     }
   }
-  
+
   return QT;
 }
 
@@ -458,7 +459,7 @@ TypeInfo getTypeInfoForType(const QualType &T) {
     IT = InfoType::IT_record;
   else
     IT = InfoType::IT_default;
-  
+
   Reference R = Reference(getUSRForDecl(TD), TD->getNameAsString(), IT,
                           T.getAsString(), getInfoRelativePath(TD));
   TypeInfo TI = TypeInfo(R);
@@ -471,8 +472,7 @@ static bool isPublic(const clang::AccessSpecifier AS,
                      const clang::Linkage Link) {
   if (AS == clang::AccessSpecifier::AS_private)
     return false;
-  if ((Link == clang::Linkage::Module) ||
-      (Link == clang::Linkage::External))
+  if ((Link == clang::Linkage::Module) || (Link == clang::Linkage::External))
     return true;
   return false; // otherwise, linkage is some form of internal linkage
 }
@@ -638,7 +638,7 @@ static void parseBases(RecordInfo &I, const CXXRecordDecl *D) {
   // Don't parse bases if this isn't a definition.
   if (!D->isThisDeclarationADefinition())
     return;
-  
+
   for (const CXXBaseSpecifier &B : D->bases()) {
     if (B.isVirtual())
       continue;
@@ -739,8 +739,7 @@ static void populateInfo(Info &I, const T *D, const FullComment *C,
 
 template <typename T>
 static void populateSymbolInfo(SymbolInfo &I, const T *D, const FullComment *C,
-                               Location Loc,
-                               bool &IsInAnonymousNamespace) {
+                               Location Loc, bool &IsInAnonymousNamespace) {
   populateInfo(I, D, C, IsInAnonymousNamespace);
   if (D->isThisDeclarationADefinition())
     I.DefLoc = Loc;
@@ -749,8 +748,7 @@ static void populateSymbolInfo(SymbolInfo &I, const T *D, const FullComment *C,
 }
 
 static void populateFunctionInfo(FunctionInfo &I, const FunctionDecl *D,
-                                 const FullComment *FC, 
-                                 Location Loc,
+                                 const FullComment *FC, Location Loc,
                                  bool &IsInAnonymousNamespace) {
   populateSymbolInfo(I, D, FC, Loc, IsInAnonymousNamespace);
   I.ReturnType = getTypeInfoForType(D->getReturnType());
@@ -851,7 +849,7 @@ parseBases(RecordInfo &I, const CXXRecordDecl *D, bool IsFileInRootDir,
 }
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const NamespaceDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const NamespaceDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly) {
   auto I = std::make_unique<NamespaceInfo>();
   bool IsInAnonymousNamespace = false;
@@ -872,14 +870,14 @@ emitInfo(const NamespaceDecl *D, const FullComment *FC, Location Loc,
 }
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const RecordDecl *D, const FullComment *FC, 
-         Location Loc, bool PublicOnly) {
+emitInfo(const RecordDecl *D, const FullComment *FC, Location Loc,
+         bool PublicOnly) {
   auto I = std::make_unique<RecordInfo>();
   bool IsInAnonymousNamespace = false;
   populateSymbolInfo(*I, D, FC, Loc, IsInAnonymousNamespace);
   if (!shouldSerializeInfo(PublicOnly, IsInAnonymousNamespace, D))
     return {};
-  
+
   I->TagType = D->getTagKind();
   parseFields(*I, D, PublicOnly);
   if (const auto *C = dyn_cast<CXXRecordDecl>(D)) {
@@ -940,8 +938,8 @@ emitInfo(const RecordDecl *D, const FullComment *FC,
 }
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const FunctionDecl *D, const FullComment *FC,
-         Location Loc, bool PublicOnly) {
+emitInfo(const FunctionDecl *D, const FullComment *FC, Location Loc,
+         bool PublicOnly) {
   FunctionInfo Func;
   bool IsInAnonymousNamespace = false;
   populateFunctionInfo(Func, D, FC, Loc, IsInAnonymousNamespace);
@@ -954,8 +952,8 @@ emitInfo(const FunctionDecl *D, const FullComment *FC,
 }
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const CXXMethodDecl *D, const FullComment *FC,
-         Location Loc, bool PublicOnly) {
+emitInfo(const CXXMethodDecl *D, const FullComment *FC, Location Loc,
+         bool PublicOnly) {
   FunctionInfo Func;
   bool IsInAnonymousNamespace = false;
   populateFunctionInfo(Func, D, FC, Loc, IsInAnonymousNamespace);
@@ -982,21 +980,21 @@ emitInfo(const CXXMethodDecl *D, const FullComment *FC,
 }
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const TypedefDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const TypedefDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly) {
-  
+
   TypedefInfo Info;
-  ASTContext& Context = D->getASTContext();
+  ASTContext &Context = D->getASTContext();
   bool IsInAnonymousNamespace = false;
   populateInfo(Info, D, FC, IsInAnonymousNamespace);
-  
+
   if (!shouldSerializeInfo(PublicOnly, IsInAnonymousNamespace, D))
     return {};
-  
+
   Info.DefLoc = Loc;
   Info.Underlying = getTypeInfoForType(D->getUnderlyingType());
   Info.TypeDeclaration = getTypeDefDecl(D);
-  
+
   if (Info.Underlying.Type.Name.empty()) {
     // Typedef for an unnamed type. This is like "typedef struct { } Foo;"
     // The record serializer explicitly checks for this syntax and constructs
@@ -1018,10 +1016,10 @@ emitInfo(const TypedefDecl *D, const FullComment *FC, Location Loc,
 // A type alias is a C++ "using" declaration for a type. It gets mapped to a
 // TypedefInfo with the IsUsing flag set.
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const TypeAliasDecl *D, const FullComment *FC, 
-         Location Loc, bool PublicOnly) {
+emitInfo(const TypeAliasDecl *D, const FullComment *FC, Location Loc,
+         bool PublicOnly) {
   TypedefInfo Info;
-  ASTContext& Context = D->getASTContext();
+  ASTContext &Context = D->getASTContext();
   bool IsInAnonymousNamespace = false;
   populateInfo(Info, D, FC, IsInAnonymousNamespace);
   if (!shouldSerializeInfo(PublicOnly, IsInAnonymousNamespace, D))
@@ -1031,7 +1029,7 @@ emitInfo(const TypeAliasDecl *D, const FullComment *FC,
   Info.Underlying = getTypeInfoForType(D->getUnderlyingType());
   Info.TypeDeclaration = getTypeAlias(D);
   Info.IsUsing = true;
-  
+
   if (RawComment *Comment = D->getASTContext().getRawCommentForDeclNoCache(D)) {
     Comment->setAttached();
     if (comments::FullComment *Fc = Comment->parse(Context, nullptr, D)) {
@@ -1044,12 +1042,12 @@ emitInfo(const TypeAliasDecl *D, const FullComment *FC,
 }
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const EnumDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const EnumDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly) {
   EnumInfo Enum;
   bool IsInAnonymousNamespace = false;
   populateSymbolInfo(Enum, D, FC, Loc, IsInAnonymousNamespace);
-  
+
   if (!shouldSerializeInfo(PublicOnly, IsInAnonymousNamespace, D))
     return {};
 
diff --git a/clang-tools-extra/clang-doc/Serialize.h b/clang-tools-extra/clang-doc/Serialize.h
index 8874299e9a..bdf969aa56 100644
--- a/clang-tools-extra/clang-doc/Serialize.h
+++ b/clang-tools-extra/clang-doc/Serialize.h
@@ -37,31 +37,31 @@ namespace serialize {
 // its parent scope. For NamespaceDecl and RecordDecl both elements are not
 // nullptr.
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const NamespaceDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const NamespaceDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const RecordDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const RecordDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const EnumDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const EnumDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const FunctionDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const FunctionDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const CXXMethodDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const CXXMethodDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const TypedefDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const TypedefDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 std::pair<std::unique_ptr<Info>, std::unique_ptr<Info>>
-emitInfo(const TypeAliasDecl *D, const FullComment *FC, Location Loc, 
+emitInfo(const TypeAliasDecl *D, const FullComment *FC, Location Loc,
          bool PublicOnly);
 
 // Function to hash a given USR value for storage.
diff --git a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
index 0bde27eb2a..688d856d7c 100644
--- a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
+++ b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
@@ -99,12 +99,7 @@ URL of repository that hosts code.
 Used for links to definition locations.)"),
                   llvm::cl::cat(ClangDocCategory));
 
-enum OutputFormatTy {
-  md,
-  yaml,
-  html,
-  mhtml
-};
+enum OutputFormatTy { md, yaml, html, mhtml };
 
 static llvm::cl::opt<OutputFormatTy>
     FormatEnum("format", llvm::cl::desc("Format for outputted docs."),
@@ -163,15 +158,14 @@ llvm::Error getAssetFiles(clang::doc::ClangDocContext &CDCtx) {
   return llvm::Error::success();
 }
 
-llvm::SmallString<128> appendPathNative(llvm::SmallString<128> Path, 
-                                    llvm::StringRef Asset) {
+llvm::SmallString<128> appendPathNative(llvm::SmallString<128> Path,
+                                        llvm::StringRef Asset) {
   llvm::SmallString<128> Default;
   llvm::sys::path::native(Path, Default);
   llvm::sys::path::append(Default, Asset);
   return Default;
 }
 
-
 llvm::Error getDefaultAssetFiles(const char *Argv0,
                                  clang::doc::ClangDocContext &CDCtx) {
   void *MainAddr = (void *)(intptr_t)getExecutablePath;
@@ -184,8 +178,7 @@ llvm::Error getDefaultAssetFiles(const char *Argv0,
   llvm::sys::path::append(AssetsPath, "..", "share", "clang-doc");
   llvm::SmallString<128> DefaultStylesheet =
       appendPathNative(AssetsPath, "clang-doc-default-stylesheet.css");
-  llvm::SmallString<128> IndexJS =
-      appendPathNative(AssetsPath, "index.js");
+  llvm::SmallString<128> IndexJS = appendPathNative(AssetsPath, "index.js");
 
   if (!llvm::sys::fs::is_regular_file(IndexJS))
     return llvm::createStringError(llvm::inconvertibleErrorCode(),
@@ -216,7 +209,6 @@ llvm::Error getHtmlAssetFiles(const char *Argv0,
   return getDefaultAssetFiles(Argv0, CDCtx);
 }
 
-
 llvm::Error getMustacheHtmlFiles(const char *Argv0,
                                  clang::doc::ClangDocContext &CDCtx) {
   if (!UserAssetPath.empty() &&
@@ -225,45 +217,43 @@ llvm::Error getMustacheHtmlFiles(const char *Argv0,
                  << " falling back to default\n";
   if (llvm::sys::fs::is_directory(std::string(UserAssetPath)))
     return getAssetFiles(CDCtx);
-  
+
   void *MainAddr = (void *)(intptr_t)getExecutablePath;
   std::string ClangDocPath = getExecutablePath(Argv0, MainAddr);
   llvm::SmallString<128> NativeClangDocPath;
   llvm::sys::path::native(ClangDocPath, NativeClangDocPath);
-  
+
   llvm::SmallString<128> AssetsPath;
   AssetsPath = llvm::sys::path::parent_path(NativeClangDocPath);
   llvm::sys::path::append(AssetsPath, "..", "share", "clang-doc");
-  
-  llvm::SmallString<128> DefaultStylesheet
-      = appendPathNative(AssetsPath, "clang-doc-mustache.css");
-  llvm::SmallString<128> NamespaceTemplate 
-      = appendPathNative(AssetsPath, "namespace-template.mustache");
-  llvm::SmallString<128> ClassTemplate
-      = appendPathNative(AssetsPath, "class-template.mustache");
-  llvm::SmallString<128> EnumTemplate
-      = appendPathNative(AssetsPath, "enum-template.mustache");
-  llvm::SmallString<128> FunctionTemplate
-      = appendPathNative(AssetsPath, "function-template.mustache");
-  llvm::SmallString<128> CommentTemplate
-      = appendPathNative(AssetsPath, "comments-template.mustache");
-  llvm::SmallString<128> IndexJS
-      = appendPathNative(AssetsPath, "mustache-index.js");
-  
+
+  llvm::SmallString<128> DefaultStylesheet =
+      appendPathNative(AssetsPath, "clang-doc-mustache.css");
+  llvm::SmallString<128> NamespaceTemplate =
+      appendPathNative(AssetsPath, "namespace-template.mustache");
+  llvm::SmallString<128> ClassTemplate =
+      appendPathNative(AssetsPath, "class-template.mustache");
+  llvm::SmallString<128> EnumTemplate =
+      appendPathNative(AssetsPath, "enum-template.mustache");
+  llvm::SmallString<128> FunctionTemplate =
+      appendPathNative(AssetsPath, "function-template.mustache");
+  llvm::SmallString<128> CommentTemplate =
+      appendPathNative(AssetsPath, "comments-template.mustache");
+  llvm::SmallString<128> IndexJS =
+      appendPathNative(AssetsPath, "mustache-index.js");
+
   CDCtx.JsScripts.insert(CDCtx.JsScripts.begin(), IndexJS.c_str());
   CDCtx.UserStylesheets.insert(CDCtx.UserStylesheets.begin(),
                                std::string(DefaultStylesheet));
-  CDCtx.MustacheTemplates.insert({"namespace-template", 
-                                  NamespaceTemplate.c_str()});
-  CDCtx.MustacheTemplates.insert({"class-template",
-                                  ClassTemplate.c_str()});
-  CDCtx.MustacheTemplates.insert({"enum-template",
-                                  EnumTemplate.c_str()});
-  CDCtx.MustacheTemplates.insert({"function-template",
-                                  FunctionTemplate.c_str()});
-  CDCtx.MustacheTemplates.insert({"comments-template", 
-                                  CommentTemplate.c_str()});
-  
+  CDCtx.MustacheTemplates.insert(
+      {"namespace-template", NamespaceTemplate.c_str()});
+  CDCtx.MustacheTemplates.insert({"class-template", ClassTemplate.c_str()});
+  CDCtx.MustacheTemplates.insert({"enum-template", EnumTemplate.c_str()});
+  CDCtx.MustacheTemplates.insert(
+      {"function-template", FunctionTemplate.c_str()});
+  CDCtx.MustacheTemplates.insert(
+      {"comments-template", CommentTemplate.c_str()});
+
   return llvm::Error::success();
 }
 
@@ -339,7 +329,7 @@ Example usage for a project using a compile commands database:
       return 1;
     }
   }
-  
+
   if (Format == "mhtml") {
     if (auto Err = getMustacheHtmlFiles(argv[0], CDCtx)) {
       llvm::errs() << toString(std::move(Err)) << "\n";

``````````

</details>


https://github.com/llvm/llvm-project/pull/133161


More information about the llvm-commits mailing list