https://github.com/SamrudhNelli updated 
https://github.com/llvm/llvm-project/pull/181347

>From ad23cfaa3b9d265e5d52cde46854dac269a20810 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Fri, 13 Feb 2026 16:46:45 +0530
Subject: [PATCH 1/8] [clang-doc] Display enum type along with enum name in
 HTML view

For named variables
Previous output : enum XYZ
Current output : enum XYZ : unsigned int

For unnamed variables
Previous output : enum
Current output : enum : unsigned int

Fixes #llvm/166652
---
 clang-tools-extra/clang-doc/JSONGenerator.cpp          | 10 +++++++---
 .../clang-doc/assets/enum-template.mustache            |  2 +-
 clang-tools-extra/test/clang-doc/enum.cpp              |  2 +-
 3 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 5051e7e6e690d..e44bdaaf8e510 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -565,9 +565,13 @@ static void serializeInfo(const EnumInfo &I, json::Object 
&Obj,
   if (I.BaseType) {
     json::Value BaseTypeVal = Object();
     auto &BaseTypeObj = *BaseTypeVal.getAsObject();
-    BaseTypeObj["Name"] = I.BaseType->Type.Name;
-    BaseTypeObj["QualName"] = I.BaseType->Type.QualName;
-    BaseTypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR));
+    // Create a nested 'Type' object so the template can find {{Type.Name}}
+    json::Value TypeVal = Object();
+    auto &TypeObj = *TypeVal.getAsObject();
+    TypeObj["Name"] = I.BaseType->Type.Name;
+    TypeObj["QualName"] = I.BaseType->Type.QualName;
+    TypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR));
+    BaseTypeObj["Type"] = TypeVal;
     Obj["BaseType"] = BaseTypeVal;
   }
 
diff --git a/clang-tools-extra/clang-doc/assets/enum-template.mustache 
b/clang-tools-extra/clang-doc/assets/enum-template.mustache
index 7434b7bfce347..dc4260dcc37e2 100644
--- a/clang-tools-extra/clang-doc/assets/enum-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/enum-template.mustache
@@ -7,7 +7,7 @@
 }}
 <div id="{{USR}}" class="delimiter-container">
     <div>
-        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}</code></pre>
+        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}{{#BaseType}} : {{Type.Name}}{{/BaseType}}</code></pre>
     </div>
     {{! Enum Values }}
     <table class="table-wrapper">
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp 
b/clang-tools-extra/test/clang-doc/enum.cpp
index 6e11bbf065f25..a866f2e43aa75 100644
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -82,7 +82,7 @@ enum class Shapes {
 
 // COM: FIXME: Serialize "enum class" in template
 // HTML-INDEX:     <div>
-// HTML-INDEX:         <pre><code class="language-cpp code-clang-doc">enum 
Shapes</code></pre>
+// HTML-INDEX:         <pre><code class="language-cpp code-clang-doc">enum 
Shapes : int</code></pre>
 // HTML-INDEX:     </div>
 // HTML-INDEX:     <table class="table-wrapper">
 // HTML-INDEX:         <tbody>

>From 46b3401fcf5b2e5cc80fecf2ccc467422bde3d80 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Sat, 14 Feb 2026 11:21:15 +0530
Subject: [PATCH 2/8] fix: remove duplicate info from the json

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp             | 8 +-------
 clang-tools-extra/clang-doc/assets/enum-template.mustache | 2 +-
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index e44bdaaf8e510..47d69ce38ffbb 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -565,13 +565,7 @@ static void serializeInfo(const EnumInfo &I, json::Object 
&Obj,
   if (I.BaseType) {
     json::Value BaseTypeVal = Object();
     auto &BaseTypeObj = *BaseTypeVal.getAsObject();
-    // Create a nested 'Type' object so the template can find {{Type.Name}}
-    json::Value TypeVal = Object();
-    auto &TypeObj = *TypeVal.getAsObject();
-    TypeObj["Name"] = I.BaseType->Type.Name;
-    TypeObj["QualName"] = I.BaseType->Type.QualName;
-    TypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR));
-    BaseTypeObj["Type"] = TypeVal;
+    BaseTypeObj["Name"] = I.BaseType->Type.QualName;
     Obj["BaseType"] = BaseTypeVal;
   }
 
diff --git a/clang-tools-extra/clang-doc/assets/enum-template.mustache 
b/clang-tools-extra/clang-doc/assets/enum-template.mustache
index dc4260dcc37e2..809539565e185 100644
--- a/clang-tools-extra/clang-doc/assets/enum-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/enum-template.mustache
@@ -7,7 +7,7 @@
 }}
 <div id="{{USR}}" class="delimiter-container">
     <div>
-        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}{{#BaseType}} : {{Type.Name}}{{/BaseType}}</code></pre>
+        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}{{#BaseType}} : {{Name}}{{/BaseType}}</code></pre>
     </div>
     {{! Enum Values }}
     <table class="table-wrapper">

>From 86b23f9680d0e03a3bcd9009ed8571b1af231f42 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Sat, 14 Feb 2026 11:33:06 +0530
Subject: [PATCH 3/8] fix: revert JSONGenerator.cpp and use QualName for type
 in template

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp             | 4 +++-
 clang-tools-extra/clang-doc/assets/enum-template.mustache | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 47d69ce38ffbb..5051e7e6e690d 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -565,7 +565,9 @@ static void serializeInfo(const EnumInfo &I, json::Object 
&Obj,
   if (I.BaseType) {
     json::Value BaseTypeVal = Object();
     auto &BaseTypeObj = *BaseTypeVal.getAsObject();
-    BaseTypeObj["Name"] = I.BaseType->Type.QualName;
+    BaseTypeObj["Name"] = I.BaseType->Type.Name;
+    BaseTypeObj["QualName"] = I.BaseType->Type.QualName;
+    BaseTypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR));
     Obj["BaseType"] = BaseTypeVal;
   }
 
diff --git a/clang-tools-extra/clang-doc/assets/enum-template.mustache 
b/clang-tools-extra/clang-doc/assets/enum-template.mustache
index 809539565e185..4b9e635ac86f9 100644
--- a/clang-tools-extra/clang-doc/assets/enum-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/enum-template.mustache
@@ -7,7 +7,7 @@
 }}
 <div id="{{USR}}" class="delimiter-container">
     <div>
-        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}{{#BaseType}} : {{Name}}{{/BaseType}}</code></pre>
+        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}{{#BaseType}} : {{QualName}}{{/BaseType}}</code></pre>
     </div>
     {{! Enum Values }}
     <table class="table-wrapper">

>From 5e8dfc23fe3cfec833609d101820a344fc3f5d81 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Thu, 19 Feb 2026 05:20:19 +0530
Subject: [PATCH 4/8] Print underlying type only for explicitly defined enums

---
 clang-tools-extra/clang-doc/MDGenerator.cpp |  16 +-
 clang-tools-extra/clang-doc/Serialize.cpp   |   4 +-
 clang-tools-extra/test/clang-doc/enum.cpp   | 292 +++++++++++++-------
 3 files changed, 208 insertions(+), 104 deletions(-)

diff --git a/clang-tools-extra/clang-doc/MDGenerator.cpp 
b/clang-tools-extra/clang-doc/MDGenerator.cpp
index fcb75af80f9e9..cd32b5ea8970a 100644
--- a/clang-tools-extra/clang-doc/MDGenerator.cpp
+++ b/clang-tools-extra/clang-doc/MDGenerator.cpp
@@ -156,10 +156,18 @@ static void writeNameLink(const StringRef &CurrentPath, 
const Reference &R,
 
 static void genMarkdown(const ClangDocContext &CDCtx, const EnumInfo &I,
                         llvm::raw_ostream &OS) {
-  if (I.Scoped)
-    writeLine("| enum class " + I.Name + " |", OS);
-  else
-    writeLine("| enum " + I.Name + " |", OS);
+  std::string Header = "| enum ";
+  if(I.Scoped)
+    Header += "class ";
+  Header += I.Name;
+  Header += " ";
+  if(I.BaseType && I.BaseType->Type.QualName != "") {
+    Header += ": ";
+    Header += I.BaseType->Type.QualName;
+    Header += " ";
+  }
+  Header += "|";
+  writeLine(Header, OS);
   writeLine("--", OS);
 
   std::string Buffer;
diff --git a/clang-tools-extra/clang-doc/Serialize.cpp 
b/clang-tools-extra/clang-doc/Serialize.cpp
index 39c0cb378b0f5..8c6d5c972fd9e 100644
--- a/clang-tools-extra/clang-doc/Serialize.cpp
+++ b/clang-tools-extra/clang-doc/Serialize.cpp
@@ -1207,8 +1207,8 @@ emitInfo(const EnumDecl *D, const FullComment *FC, 
Location Loc,
     return {};
 
   Enum.Scoped = D->isScoped();
-  if (D->isFixed()) {
-    auto Name = D->getIntegerType().getAsString();
+  if (const TypeSourceInfo *Info = D->getIntegerTypeSourceInfo()) {
+    auto Name = Info->getType().getAsString();
     Enum.BaseType = TypeInfo(Name, Name);
   }
   parseEnumerators(Enum, D);
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp 
b/clang-tools-extra/test/clang-doc/enum.cpp
index a866f2e43aa75..983f5f7a81aec 100644
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -13,6 +13,7 @@
 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md --check-prefix=MD-ANIMAL
 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES-LINE
 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES
+#include <cstdint>
 
 // COM: FIXME: Add enum value comments to template
 
@@ -35,29 +36,28 @@ enum Color {
 // MD-INDEX: | Blue |
 // MD-INDEX: **brief** For specifying RGB colors
 
-// HTML-INDEX:     <div>
-// HTML-INDEX:         <pre><code class="language-cpp code-clang-doc">enum 
Color</code></pre>
-// HTML-INDEX:     </div>
-// HTML-INDEX:     <table class="table-wrapper">
-// HTML-INDEX:         <tbody>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <th>Name</th>
-// HTML-INDEX:                 <th>Value</th>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>Red</td>
-// HTML-INDEX:                 <td>0</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>Green</td>
-// HTML-INDEX:                 <td>1</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>Blue</td>
-// HTML-INDEX:                 <td>2</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:         </tbody>
-// HTML-INDEX:     </table>
+// HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
Color</code></pre>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <table class="table-wrapper">
+// HTML-INDEX-NEXT:         <tbody>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <th>Name</th>
+// HTML-INDEX-NEXT:                 <th>Value</th>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Red</td>
+// HTML-INDEX-NEXT:                 <td>0</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Green</td>
+// HTML-INDEX-NEXT:                 <td>1</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Blue</td>
+// HTML-INDEX-NEXT:                 <td>2</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:         </tbody>
+// HTML-INDEX-NEXT:     </table>
 
 /**
  * @brief Shape Types
@@ -81,29 +81,127 @@ enum class Shapes {
 // MD-INDEX: **brief** Shape Types
 
 // COM: FIXME: Serialize "enum class" in template
-// HTML-INDEX:     <div>
-// HTML-INDEX:         <pre><code class="language-cpp code-clang-doc">enum 
Shapes : int</code></pre>
-// HTML-INDEX:     </div>
-// HTML-INDEX:     <table class="table-wrapper">
-// HTML-INDEX:         <tbody>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <th>Name</th>
-// HTML-INDEX:                 <th>Value</th>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>Circle</td>
-// HTML-INDEX:                 <td>0</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>Rectangle</td>
-// HTML-INDEX:                 <td>1</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>Triangle</td>
-// HTML-INDEX:                 <td>2</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:         </tbody>
-// HTML-INDEX:     </table>
+// HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
Shapes</code></pre>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <table class="table-wrapper">
+// HTML-INDEX-NEXT:         <tbody>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <th>Name</th>
+// HTML-INDEX-NEXT:                 <th>Value</th>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Circle</td>
+// HTML-INDEX-NEXT:                 <td>0</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Rectangle</td>
+// HTML-INDEX-NEXT:                 <td>1</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Triangle</td>
+// HTML-INDEX-NEXT:                 <td>2</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:         </tbody>
+// HTML-INDEX-NEXT:     </table>
+
+/**
+ * @brief Specify the size
+ */
+enum Size : uint8_t {
+  // MD-INDEX-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
+  // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+  Small,   ///< A pearl
+  Medium,  ///< A tennis ball
+  Large    ///< A football
+};
+
+// MD-INDEX: | enum Size : uint8_t |
+// MD-INDEX: --
+// MD-INDEX: | Small |
+// MD-INDEX: | Medium |
+// MD-INDEX: | Large |
+// MD-INDEX: **brief** Specify the size
+
+// HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum 
Size : uint8_t</code></pre>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <table class="table-wrapper">
+// HTML-INDEX-NEXT:         <tbody>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <th>Name</th>
+// HTML-INDEX-NEXT:                 <th>Value</th>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Small</td>
+// HTML-INDEX-NEXT:                 <td>0</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Medium</td>
+// HTML-INDEX-NEXT:                 <td>1</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>Large</td>
+// HTML-INDEX-NEXT:                 <td>2</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:         </tbody>
+// HTML-INDEX-NEXT:     </table>
+
+/**
+ * @brief Very long number
+ */
+enum : long long {
+  // MD-INDEX-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
+  // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+  BigVal = 999999999999
+};
+
+// MD-INDEX: | enum : long long |
+// MD-INDEX: --
+// MD-INDEX: | BigVal |
+// MD-INDEX: **brief** Very long number
+
+// HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum : 
long long</code></pre>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <table class="table-wrapper">
+// HTML-INDEX-NEXT:         <tbody>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <th>Name</th>
+// HTML-INDEX-NEXT:                 <th>Value</th>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>BigVal</td>
+// HTML-INDEX-NEXT:                 <td>999999999999</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:         </tbody>
+// HTML-INDEX-NEXT:     </table>
+
+/**
+ * @brief This is a top secret
+ */
+enum {
+  // MD-INDEX-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
+  // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+  secret = true
+};
+
+// MD-INDEX: | enum |
+// MD-INDEX: --
+// MD-INDEX: | secret |
+// MD-INDEX: **brief** This is a top secret
+
+// HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum 
</code></pre>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <table class="table-wrapper">
+// HTML-INDEX-NEXT:         <tbody>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <th>Name</th>
+// HTML-INDEX-NEXT:                 <th>Value</th>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>secret</td>
+// HTML-INDEX-NEXT:                 <td>true</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:         </tbody>
+// HTML-INDEX-NEXT:     </table>
 
 // COM: FIXME: Add enums declared inside of classes to class template
 class Animals {
@@ -122,7 +220,7 @@ class Animals {
   };
 };
 
-// HTML-ANIMAL:      <section id="Enums" class="section-container">
+// HTML-ANIMAL:          <section id="Enums" class="section-container">
 // HTML-ANIMAL-NEXT:     <h2>Enumerations</h2>
 // HTML-ANIMAL-NEXT:     <div id="{{([0-9A-F]{40})}}" 
class="delimiter-container">
 // HTML-ANIMAL-NEXT:         <div>
@@ -153,7 +251,7 @@ class Animals {
 // HTML-ANIMAL-NEXT:                 <p> specify what animal the class is</p>
 // HTML-ANIMAL-NEXT:             </div>
 // HTML-ANIMAL-NEXT:         </div>
-// HTML-ANIMAL-NEXT:         <p>Defined at line 116 of file {{.*}}enum.cpp</p>
+// HTML-ANIMAL-NEXT:         <p>Defined at line {{.*}} of file 
{{.*}}enum.cpp</p>
 // HTML-ANIMAL-NEXT:     </div>
 // HTML-ANIMAL-NEXT: </section>
 
@@ -191,33 +289,32 @@ enum Car {
 // MD-VEHICLES: | Hatchback |
 // MD-VEHICLES: **brief** specify type of car
 
-// HTML-VEHICLES:     <div>
-// HTML-VEHICLES:         <pre><code class="language-cpp code-clang-doc">enum 
Car</code></pre>
-// HTML-VEHICLES:      </div>
-// HTML-VEHICLES:      <table class="table-wrapper">
-// HTML-VEHICLES:          <tbody>
-// HTML-VEHICLES:              <tr>
-// HTML-VEHICLES:                  <th>Name</th>
-// HTML-VEHICLES:                  <th>Value</th>
-// HTML-VEHICLES:              </tr>
-// HTML-VEHICLES:              <tr>
-// HTML-VEHICLES:                  <td>Sedan</td>
-// HTML-VEHICLES:                  <td>0</td>
-// HTML-VEHICLES:              </tr>
-// HTML-VEHICLES:              <tr>
-// HTML-VEHICLES:                  <td>SUV</td>
-// HTML-VEHICLES:                  <td>1</td>
-// HTML-VEHICLES:              </tr>
-// HTML-VEHICLES:              <tr>
-// HTML-VEHICLES:                  <td>Pickup</td>
-// HTML-VEHICLES:                  <td>2</td>
-// HTML-VEHICLES:              </tr>
-// HTML-VEHICLES:              <tr>
-// HTML-VEHICLES:                  <td>Hatchback</td>
-// HTML-VEHICLES:                  <td>3</td>
-// HTML-VEHICLES:              </tr>
-// HTML-VEHICLES:          </tbody>
-// HTML-VEHICLES:      </table>
+// HTML-VEHICLES-LABEL:     <pre><code class="language-cpp 
code-clang-doc">enum Car</code></pre>
+// HTML-VEHICLES-NEXT:      </div>
+// HTML-VEHICLES-NEXT:      <table class="table-wrapper">
+// HTML-VEHICLES-NEXT:          <tbody>
+// HTML-VEHICLES-NEXT:              <tr>
+// HTML-VEHICLES-NEXT:                  <th>Name</th>
+// HTML-VEHICLES-NEXT:                  <th>Value</th>
+// HTML-VEHICLES-NEXT:              </tr>
+// HTML-VEHICLES-NEXT:              <tr>
+// HTML-VEHICLES-NEXT:                  <td>Sedan</td>
+// HTML-VEHICLES-NEXT:                  <td>0</td>
+// HTML-VEHICLES-NEXT:              </tr>
+// HTML-VEHICLES-NEXT:              <tr>
+// HTML-VEHICLES-NEXT:                  <td>SUV</td>
+// HTML-VEHICLES-NEXT:                  <td>1</td>
+// HTML-VEHICLES-NEXT:              </tr>
+// HTML-VEHICLES-NEXT:              <tr>
+// HTML-VEHICLES-NEXT:                  <td>Pickup</td>
+// HTML-VEHICLES-NEXT:                  <td>2</td>
+// HTML-VEHICLES-NEXT:              </tr>
+// HTML-VEHICLES-NEXT:              <tr>
+// HTML-VEHICLES-NEXT:                  <td>Hatchback</td>
+// HTML-VEHICLES-NEXT:                  <td>3</td>
+// HTML-VEHICLES-NEXT:              </tr>
+// HTML-VEHICLES-NEXT:          </tbody>
+// HTML-VEHICLES-NEXT:      </table>
 
 enum ColorUserSpecified {
   RedUserSpecified = 'A',
@@ -231,26 +328,25 @@ enum ColorUserSpecified {
 // MD-INDEX: | GreenUserSpecified |
 // MD-INDEX: | BlueUserSpecified |
 
-// HTML-INDEX:     <div>
-// HTML-INDEX:         <pre><code class="language-cpp code-clang-doc">enum 
ColorUserSpecified</code></pre>
-// HTML-INDEX:     </div>
-// HTML-INDEX:     <table class="table-wrapper">
-// HTML-INDEX:         <tbody>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <th>Name</th>
-// HTML-INDEX:                 <th>Value</th>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>RedUserSpecified</td>
-// HTML-INDEX:                 <td>&#39;A&#39;</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>GreenUserSpecified</td>
-// HTML-INDEX:                 <td>2</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:             <tr>
-// HTML-INDEX:                 <td>BlueUserSpecified</td>
-// HTML-INDEX:                 <td>&#39;C&#39;</td>
-// HTML-INDEX:             </tr>
-// HTML-INDEX:         </tbody>
-// HTML-INDEX:     </table>
+// HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
ColorUserSpecified</code></pre>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <table class="table-wrapper">
+// HTML-INDEX-NEXT:         <tbody>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <th>Name</th>
+// HTML-INDEX-NEXT:                 <th>Value</th>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>RedUserSpecified</td>
+// HTML-INDEX-NEXT:                 <td>&#39;A&#39;</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>GreenUserSpecified</td>
+// HTML-INDEX-NEXT:                 <td>2</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:             <tr>
+// HTML-INDEX-NEXT:                 <td>BlueUserSpecified</td>
+// HTML-INDEX-NEXT:                 <td>&#39;C&#39;</td>
+// HTML-INDEX-NEXT:             </tr>
+// HTML-INDEX-NEXT:         </tbody>
+// HTML-INDEX-NEXT:     </table>

>From f83524bf05ff72c60c2730df4dee3d82823b9354 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Thu, 19 Feb 2026 05:50:03 +0530
Subject: [PATCH 5/8] Display Enum Value along with Name

---
 clang-tools-extra/clang-doc/MDGenerator.cpp |  6 +--
 clang-tools-extra/test/clang-doc/enum.cpp   | 42 ++++++++++-----------
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/clang-tools-extra/clang-doc/MDGenerator.cpp 
b/clang-tools-extra/clang-doc/MDGenerator.cpp
index cd32b5ea8970a..4fad57c51db7e 100644
--- a/clang-tools-extra/clang-doc/MDGenerator.cpp
+++ b/clang-tools-extra/clang-doc/MDGenerator.cpp
@@ -157,11 +157,11 @@ static void writeNameLink(const StringRef &CurrentPath, 
const Reference &R,
 static void genMarkdown(const ClangDocContext &CDCtx, const EnumInfo &I,
                         llvm::raw_ostream &OS) {
   std::string Header = "| enum ";
-  if(I.Scoped)
+  if (I.Scoped)
     Header += "class ";
   Header += I.Name;
   Header += " ";
-  if(I.BaseType && I.BaseType->Type.QualName != "") {
+  if (I.BaseType && I.BaseType->Type.QualName != "") {
     Header += ": ";
     Header += I.BaseType->Type.QualName;
     Header += " ";
@@ -174,7 +174,7 @@ static void genMarkdown(const ClangDocContext &CDCtx, const 
EnumInfo &I,
   llvm::raw_string_ostream Members(Buffer);
   if (!I.Members.empty())
     for (const auto &N : I.Members)
-      Members << "| " << N.Name << " |\n";
+      Members << "| " << N.Name << " | " << N.Value << " |\n";
   writeLine(Members.str(), OS);
 
   maybeWriteSourceFileRef(OS, CDCtx, I.DefLoc);
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp 
b/clang-tools-extra/test/clang-doc/enum.cpp
index 983f5f7a81aec..ca03946ff4acf 100644
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -31,9 +31,9 @@ enum Color {
 // MD-INDEX: ## Enums
 // MD-INDEX: | enum Color |
 // MD-INDEX: --
-// MD-INDEX: | Red |
-// MD-INDEX: | Green |
-// MD-INDEX: | Blue |
+// MD-INDEX: | Red | 0 |
+// MD-INDEX: | Green | 1 |
+// MD-INDEX: | Blue | 2 |
 // MD-INDEX: **brief** For specifying RGB colors
 
 // HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
Color</code></pre>
@@ -75,9 +75,9 @@ enum class Shapes {
 };
 // MD-INDEX: | enum class Shapes |
 // MD-INDEX: --
-// MD-INDEX: | Circle |
-// MD-INDEX: | Rectangle |
-// MD-INDEX: | Triangle |
+// MD-INDEX: | Circle | 0 |
+// MD-INDEX: | Rectangle | 1 |
+// MD-INDEX: | Triangle | 2 |
 // MD-INDEX: **brief** Shape Types
 
 // COM: FIXME: Serialize "enum class" in template
@@ -117,9 +117,9 @@ enum Size : uint8_t {
 
 // MD-INDEX: | enum Size : uint8_t |
 // MD-INDEX: --
-// MD-INDEX: | Small |
-// MD-INDEX: | Medium |
-// MD-INDEX: | Large |
+// MD-INDEX: | Small | 0 |
+// MD-INDEX: | Medium | 1 |
+// MD-INDEX: | Large | 2 |
 // MD-INDEX: **brief** Specify the size
 
 // HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum 
Size : uint8_t</code></pre>
@@ -156,7 +156,7 @@ enum : long long {
 
 // MD-INDEX: | enum : long long |
 // MD-INDEX: --
-// MD-INDEX: | BigVal |
+// MD-INDEX: | BigVal | 999999999999 |
 // MD-INDEX: **brief** Very long number
 
 // HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum : 
long long</code></pre>
@@ -185,7 +185,7 @@ enum {
 
 // MD-INDEX: | enum |
 // MD-INDEX: --
-// MD-INDEX: | secret |
+// MD-INDEX: | secret | 1 |
 // MD-INDEX: **brief** This is a top secret
 
 // HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum 
</code></pre>
@@ -259,9 +259,9 @@ class Animals {
 // MD-ANIMAL: ## Enums
 // MD-ANIMAL: | enum AnimalType |
 // MD-ANIMAL: --
-// MD-ANIMAL: | Dog |
-// MD-ANIMAL: | Cat |
-// MD-ANIMAL: | Iguana |
+// MD-ANIMAL: | Dog | 0 |
+// MD-ANIMAL: | Cat | 1 |
+// MD-ANIMAL: | Iguana | 2 |
 // MD-ANIMAL: **brief** specify what animal the class is
 
 namespace Vehicles {
@@ -283,10 +283,10 @@ enum Car {
 // MD-VEHICLES: ## Enums
 // MD-VEHICLES: | enum Car |
 // MD-VEHICLES: --
-// MD-VEHICLES: | Sedan |
-// MD-VEHICLES: | SUV |
-// MD-VEHICLES: | Pickup |
-// MD-VEHICLES: | Hatchback |
+// MD-VEHICLES: | Sedan | 0 |
+// MD-VEHICLES: | SUV | 1 |
+// MD-VEHICLES: | Pickup | 2 |
+// MD-VEHICLES: | Hatchback | 3 |
 // MD-VEHICLES: **brief** specify type of car
 
 // HTML-VEHICLES-LABEL:     <pre><code class="language-cpp 
code-clang-doc">enum Car</code></pre>
@@ -324,9 +324,9 @@ enum ColorUserSpecified {
 
 // MD-INDEX: | enum ColorUserSpecified |
 // MD-INDEX: --
-// MD-INDEX: | RedUserSpecified |
-// MD-INDEX: | GreenUserSpecified |
-// MD-INDEX: | BlueUserSpecified |
+// MD-INDEX: | RedUserSpecified | 65 |
+// MD-INDEX: | GreenUserSpecified | 2 |
+// MD-INDEX: | BlueUserSpecified | 67 |
 
 // HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
ColorUserSpecified</code></pre>
 // HTML-INDEX-NEXT:     </div>

>From 6be1f15185331e27c0262c4760ffaa382f46af16 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Thu, 19 Feb 2026 12:22:34 +0530
Subject: [PATCH 6/8] Update unittests to include | Name | Value |

---
 clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp 
b/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
index b44b09b28e90f..b6d02974020a1 100644
--- a/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/MDGeneratorTest.cpp
@@ -199,7 +199,7 @@ TEST_F(MDGeneratorTest, emitEnumMD) {
 
 --
 
-| X |
+| X | 0 |
 
 
 *Defined at test.cpp#10*

>From 4032a6ba53570e8a2439f98af8c093e8d4725555 Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Fri, 20 Feb 2026 16:11:48 +0530
Subject: [PATCH 7/8] specify (unnamed) for unnamed enums, update tests

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp |   2 +
 clang-tools-extra/clang-doc/MDGenerator.cpp   |  20 +--
 clang-tools-extra/clang-doc/Serialize.cpp     |   4 +-
 .../clang-doc/assets/enum-template.mustache   |   2 +-
 clang-tools-extra/test/clang-doc/enum.cpp     | 165 +++++++++++++-----
 5 files changed, 137 insertions(+), 56 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 5051e7e6e690d..0c61da26b89dd 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -560,6 +560,8 @@ static void serializeInfo(const EnumInfo &I, json::Object 
&Obj,
                           const std::optional<StringRef> &RepositoryUrl,
                           const std::optional<StringRef> &RepositoryLine) {
   serializeCommonAttributes(I, Obj, RepositoryUrl, RepositoryLine);
+  if(I.Name.empty())
+    Obj["Name"] = "(unnamed)";
   Obj["Scoped"] = I.Scoped;
 
   if (I.BaseType) {
diff --git a/clang-tools-extra/clang-doc/MDGenerator.cpp 
b/clang-tools-extra/clang-doc/MDGenerator.cpp
index 4fad57c51db7e..360786f461088 100644
--- a/clang-tools-extra/clang-doc/MDGenerator.cpp
+++ b/clang-tools-extra/clang-doc/MDGenerator.cpp
@@ -156,19 +156,17 @@ static void writeNameLink(const StringRef &CurrentPath, 
const Reference &R,
 
 static void genMarkdown(const ClangDocContext &CDCtx, const EnumInfo &I,
                         llvm::raw_ostream &OS) {
-  std::string Header = "| enum ";
+  OS << "| enum ";
   if (I.Scoped)
-    Header += "class ";
-  Header += I.Name;
-  Header += " ";
-  if (I.BaseType && I.BaseType->Type.QualName != "") {
-    Header += ": ";
-    Header += I.BaseType->Type.QualName;
-    Header += " ";
+    OS << "class ";
+  if(I.Name.empty())
+    OS << "(unnamed) ";
+  else
+    OS << I.Name << " ";
+  if (I.BaseType && !I.BaseType->Type.QualName.empty()) {
+    OS << ": " << I.BaseType->Type.QualName << " ";
   }
-  Header += "|";
-  writeLine(Header, OS);
-  writeLine("--", OS);
+  OS << "|\n\n" << "--\n\n";
 
   std::string Buffer;
   llvm::raw_string_ostream Members(Buffer);
diff --git a/clang-tools-extra/clang-doc/Serialize.cpp 
b/clang-tools-extra/clang-doc/Serialize.cpp
index 8c6d5c972fd9e..f07187132cc07 100644
--- a/clang-tools-extra/clang-doc/Serialize.cpp
+++ b/clang-tools-extra/clang-doc/Serialize.cpp
@@ -1207,8 +1207,8 @@ emitInfo(const EnumDecl *D, const FullComment *FC, 
Location Loc,
     return {};
 
   Enum.Scoped = D->isScoped();
-  if (const TypeSourceInfo *Info = D->getIntegerTypeSourceInfo()) {
-    auto Name = Info->getType().getAsString();
+  if (const TypeSourceInfo *TSI = D->getIntegerTypeSourceInfo()) {
+    auto Name = TSI->getType().getAsString();
     Enum.BaseType = TypeInfo(Name, Name);
   }
   parseEnumerators(Enum, D);
diff --git a/clang-tools-extra/clang-doc/assets/enum-template.mustache 
b/clang-tools-extra/clang-doc/assets/enum-template.mustache
index 4b9e635ac86f9..83c6a56a4e574 100644
--- a/clang-tools-extra/clang-doc/assets/enum-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/enum-template.mustache
@@ -7,7 +7,7 @@
 }}
 <div id="{{USR}}" class="delimiter-container">
     <div>
-        <pre><code class="language-cpp code-clang-doc">enum 
{{Name}}{{#BaseType}} : {{QualName}}{{/BaseType}}</code></pre>
+        <pre><code class="language-cpp code-clang-doc">enum {{#Scoped}}class 
{{/Scoped}}{{Name}}{{#BaseType}} : {{QualName}}{{/BaseType}}</code></pre>
     </div>
     {{! Enum Values }}
     <table class="table-wrapper">
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp 
b/clang-tools-extra/test/clang-doc/enum.cpp
index ca03946ff4acf..72a021dd552b7 100644
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -5,15 +5,18 @@
 // RUN: FileCheck %s < %t/html/GlobalNamespace/index.html 
--check-prefix=HTML-INDEX
 // RUN: FileCheck %s < %t/html/GlobalNamespace/_ZTV7Animals.html 
--check-prefix=HTML-ANIMAL-LINE
 // RUN: FileCheck %s < %t/html/GlobalNamespace/_ZTV7Animals.html 
--check-prefix=HTML-ANIMAL
+// RUN: FileCheck %s < %t/html/GlobalNamespace/_ZTV15FilePermissions.html 
--check-prefix=HTML-PERM-LINE
+// RUN: FileCheck %s < %t/html/GlobalNamespace/_ZTV15FilePermissions.html 
--check-prefix=HTML-PERM
 // RUN: FileCheck %s < %t/html/Vehicles/index.html 
--check-prefix=HTML-VEHICLES-LINE
 // RUN: FileCheck %s < %t/html/Vehicles/index.html --check-prefix=HTML-VEHICLES
 // RUN: FileCheck %s < %t/GlobalNamespace/index.md --check-prefix=MD-INDEX-LINE
 // RUN: FileCheck %s < %t/GlobalNamespace/index.md --check-prefix=MD-INDEX
 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md 
--check-prefix=MD-ANIMAL-LINE
 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md --check-prefix=MD-ANIMAL
+// RUN: FileCheck %s < %t/GlobalNamespace/FilePermissions.md 
--check-prefix=MD-PERM-LINE
+// RUN: FileCheck %s < %t/GlobalNamespace/FilePermissions.md 
--check-prefix=MD-PERM
 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES-LINE
 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES
-#include <cstdint>
 
 // COM: FIXME: Add enum value comments to template
 
@@ -36,7 +39,9 @@ enum Color {
 // MD-INDEX: | Blue | 2 |
 // MD-INDEX: **brief** For specifying RGB colors
 
-// HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
Color</code></pre>
+// HTML-INDEX-LABEL:  <div id="{{([0-9A-F]{40})}}" class="delimiter-container">
+// HTML-INDEX-NEXT:     <div>
+// HTML-INDEX-NEXT:       <pre><code class="language-cpp code-clang-doc">enum 
Color</code></pre>
 // HTML-INDEX-NEXT:     </div>
 // HTML-INDEX-NEXT:     <table class="table-wrapper">
 // HTML-INDEX-NEXT:         <tbody>
@@ -58,6 +63,13 @@ enum Color {
 // HTML-INDEX-NEXT:             </tr>
 // HTML-INDEX-NEXT:         </tbody>
 // HTML-INDEX-NEXT:     </table>
+// HTML-INDEX-NEXT:     <div class="doc-card">
+// HTML-INDEX-NEXT:       <div class="nested-delimiter-container">
+// HTML-INDEX-NEXT:           <p> For specifying RGB colors</p>
+// HTML-INDEX-NEXT:       </div>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <p>Defined at line [[@LINE-45]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-INDEX-NEXT:   </div>
 
 /**
  * @brief Shape Types
@@ -80,8 +92,9 @@ enum class Shapes {
 // MD-INDEX: | Triangle | 2 |
 // MD-INDEX: **brief** Shape Types
 
-// COM: FIXME: Serialize "enum class" in template
-// HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
Shapes</code></pre>
+// HTML-INDEX-LABEL:  <div id="{{([0-9A-F]{40})}}" class="delimiter-container">
+// HTML-INDEX-NEXT:     <div>
+// HTML-INDEX-NEXT:       <pre><code class="language-cpp code-clang-doc">enum 
class Shapes</code></pre>
 // HTML-INDEX-NEXT:     </div>
 // HTML-INDEX-NEXT:     <table class="table-wrapper">
 // HTML-INDEX-NEXT:         <tbody>
@@ -103,7 +116,15 @@ enum class Shapes {
 // HTML-INDEX-NEXT:             </tr>
 // HTML-INDEX-NEXT:         </tbody>
 // HTML-INDEX-NEXT:     </table>
+// HTML-INDEX-NEXT:     <div class="doc-card">
+// HTML-INDEX-NEXT:       <div class="nested-delimiter-container">
+// HTML-INDEX-NEXT:           <p> Shape Types</p>
+// HTML-INDEX-NEXT:       </div>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <p>Defined at line [[@LINE-47]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-INDEX-NEXT:   </div>
 
+typedef unsigned char uint8_t;
 /**
  * @brief Specify the size
  */
@@ -122,7 +143,9 @@ enum Size : uint8_t {
 // MD-INDEX: | Large | 2 |
 // MD-INDEX: **brief** Specify the size
 
-// HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum 
Size : uint8_t</code></pre>
+// HTML-INDEX-LABEL:   <div id="{{([0-9A-F]{40})}}" 
class="delimiter-container">
+// HTML-INDEX-NEXT:     <div>
+// HTML-INDEX-NEXT:       <pre><code class="language-cpp code-clang-doc">enum 
Size : uint8_t</code></pre>
 // HTML-INDEX-NEXT:     </div>
 // HTML-INDEX-NEXT:     <table class="table-wrapper">
 // HTML-INDEX-NEXT:         <tbody>
@@ -144,6 +167,13 @@ enum Size : uint8_t {
 // HTML-INDEX-NEXT:             </tr>
 // HTML-INDEX-NEXT:         </tbody>
 // HTML-INDEX-NEXT:     </table>
+// HTML-INDEX-NEXT:     <div class="doc-card">
+// HTML-INDEX-NEXT:       <div class="nested-delimiter-container">
+// HTML-INDEX-NEXT:           <p> Specify the size</p>
+// HTML-INDEX-NEXT:       </div>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <p>Defined at line [[@LINE-44]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-INDEX-NEXT:   </div>
 
 /**
  * @brief Very long number
@@ -151,15 +181,17 @@ enum Size : uint8_t {
 enum : long long {
   // MD-INDEX-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
   // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
-  BigVal = 999999999999
+  BigVal = 999999999999   ///< A very large value
 };
 
-// MD-INDEX: | enum : long long |
+// MD-INDEX: | enum (unnamed) : long long |
 // MD-INDEX: --
 // MD-INDEX: | BigVal | 999999999999 |
 // MD-INDEX: **brief** Very long number
 
-// HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum : 
long long</code></pre>
+// HTML-INDEX-LABEL:  <div id="{{([0-9A-F]{40})}}" class="delimiter-container">
+// HTML-INDEX-NEXT:     <div>
+// HTML-INDEX-NEXT:       <pre><code class="language-cpp code-clang-doc">enum 
(unnamed) : long long</code></pre>
 // HTML-INDEX-NEXT:     </div>
 // HTML-INDEX-NEXT:     <table class="table-wrapper">
 // HTML-INDEX-NEXT:         <tbody>
@@ -173,35 +205,71 @@ enum : long long {
 // HTML-INDEX-NEXT:             </tr>
 // HTML-INDEX-NEXT:         </tbody>
 // HTML-INDEX-NEXT:     </table>
+// HTML-INDEX-NEXT:     <div class="doc-card">
+// HTML-INDEX-NEXT:       <div class="nested-delimiter-container">
+// HTML-INDEX-NEXT:           <p> Very long number</p>
+// HTML-INDEX-NEXT:       </div>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:     <p>Defined at line [[@LINE-32]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-INDEX-NEXT:   </div>
 
-/**
- * @brief This is a top secret
- */
-enum {
-  // MD-INDEX-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
-  // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
-  secret = true
+class FilePermissions {
+// MD-PERM-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
+// HTML-PERM-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+public:
+  /**
+   * @brief File permission flags
+   */
+  enum {
+  // MD-PERM-LINE: *Defined at 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
+  // HTML-PERM-LINE: <p>Defined at line [[@LINE-2]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+    Read    = 1,     ///> Permission to READ r
+    Write   = 2,     ///> Permission to WRITE w
+    Execute = 4      ///> Permission to EXECUTE x
+  };
 };
 
-// MD-INDEX: | enum |
-// MD-INDEX: --
-// MD-INDEX: | secret | 1 |
-// MD-INDEX: **brief** This is a top secret
+// MD-PERM: | enum (unnamed) |
+// MD-PERM: --
+// MD-PERM: | Read | 1 |
+// MD-PERM: | Write | 2 |
+// MD-PERM: | Execute | 4 |
+// MD-PERM: **brief** File permission flags
 
-// HTML-INDEX:          <pre><code class="language-cpp code-clang-doc">enum 
</code></pre>
-// HTML-INDEX-NEXT:     </div>
-// HTML-INDEX-NEXT:     <table class="table-wrapper">
-// HTML-INDEX-NEXT:         <tbody>
-// HTML-INDEX-NEXT:             <tr>
-// HTML-INDEX-NEXT:                 <th>Name</th>
-// HTML-INDEX-NEXT:                 <th>Value</th>
-// HTML-INDEX-NEXT:             </tr>
-// HTML-INDEX-NEXT:             <tr>
-// HTML-INDEX-NEXT:                 <td>secret</td>
-// HTML-INDEX-NEXT:                 <td>true</td>
-// HTML-INDEX-NEXT:             </tr>
-// HTML-INDEX-NEXT:         </tbody>
-// HTML-INDEX-NEXT:     </table>
+// HTML-PERM-LABEL:  <section id="Enums" class="section-container">
+// HTML-PERM-NEXT:     <h2>Enumerations</h2>
+// HTML-PERM-NEXT:     <div id="{{([0-9A-F]{40})}}" 
class="delimiter-container">
+// HTML-PERM-NEXT:       <div>
+// HTML-PERM-NEXT:         <pre><code class="language-cpp code-clang-doc">enum 
(unnamed)</code></pre>
+// HTML-PERM-NEXT:       </div>
+// HTML-PERM-NEXT:       <table class="table-wrapper">
+// HTML-PERM-NEXT:           <tbody>
+// HTML-PERM-NEXT:               <tr>
+// HTML-PERM-NEXT:                   <th>Name</th>
+// HTML-PERM-NEXT:                   <th>Value</th>
+// HTML-PERM-NEXT:               </tr>
+// HTML-PERM-NEXT:               <tr>
+// HTML-PERM-NEXT:                   <td>Read</td>
+// HTML-PERM-NEXT:                   <td>1</td>
+// HTML-PERM-NEXT:               </tr>
+// HTML-PERM-NEXT:               <tr>
+// HTML-PERM-NEXT:                   <td>Write</td>
+// HTML-PERM-NEXT:                   <td>2</td>
+// HTML-PERM-NEXT:               </tr>
+// HTML-PERM-NEXT:               <tr>
+// HTML-PERM-NEXT:                   <td>Execute</td>
+// HTML-PERM-NEXT:                   <td>4</td>
+// HTML-PERM-NEXT:               </tr>
+// HTML-PERM-NEXT:           </tbody>
+// HTML-PERM-NEXT:       </table>
+// HTML-PERM-NEXT:       <div class="doc-card">
+// HTML-PERM-NEXT:         <div class="nested-delimiter-container">
+// HTML-PERM-NEXT:             <p> File permission flags</p>
+// HTML-PERM-NEXT:         </div>
+// HTML-PERM-NEXT:       </div>
+// HTML-PERM-NEXT:         <p>Defined at line [[@LINE-47]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-PERM-NEXT:     </div>
+// HTML-PERM-NEXT:   </section>
 
 // COM: FIXME: Add enums declared inside of classes to class template
 class Animals {
@@ -220,11 +288,11 @@ class Animals {
   };
 };
 
-// HTML-ANIMAL:          <section id="Enums" class="section-container">
-// HTML-ANIMAL-NEXT:     <h2>Enumerations</h2>
-// HTML-ANIMAL-NEXT:     <div id="{{([0-9A-F]{40})}}" 
class="delimiter-container">
+// HTML-ANIMAL-LABEL:   <section id="Enums" class="section-container">
+// HTML-ANIMAL-NEXT:      <h2>Enumerations</h2>
+// HTML-ANIMAL-NEXT:      <div id="{{([0-9A-F]{40})}}" 
class="delimiter-container">
 // HTML-ANIMAL-NEXT:         <div>
-// HTML-ANIMAL-NEXT:             <pre><code class="language-cpp 
code-clang-doc">enum AnimalType</code></pre>
+// HTML-ANIMAL-NEXT:           <pre><code class="language-cpp 
code-clang-doc">enum AnimalType</code></pre>
 // HTML-ANIMAL-NEXT:         </div>
 // HTML-ANIMAL-NEXT:         <table class="table-wrapper">
 // HTML-ANIMAL-NEXT:             <tbody>
@@ -251,9 +319,9 @@ class Animals {
 // HTML-ANIMAL-NEXT:                 <p> specify what animal the class is</p>
 // HTML-ANIMAL-NEXT:             </div>
 // HTML-ANIMAL-NEXT:         </div>
-// HTML-ANIMAL-NEXT:         <p>Defined at line {{.*}} of file 
{{.*}}enum.cpp</p>
-// HTML-ANIMAL-NEXT:     </div>
-// HTML-ANIMAL-NEXT: </section>
+// HTML-ANIMAL-NEXT:         <p>Defined at line [[@LINE-40]] of file 
{{.*}}enum.cpp</p>
+// HTML-ANIMAL-NEXT:      </div>
+// HTML-ANIMAL-NEXT:    </section>
 
 // MD-ANIMAL: # class Animals
 // MD-ANIMAL: ## Enums
@@ -289,7 +357,9 @@ enum Car {
 // MD-VEHICLES: | Hatchback | 3 |
 // MD-VEHICLES: **brief** specify type of car
 
-// HTML-VEHICLES-LABEL:     <pre><code class="language-cpp 
code-clang-doc">enum Car</code></pre>
+// HTML-VEHICLES-LABEL:   <div id="{{([0-9A-F]{40})}}" 
class="delimiter-container">
+// HTML-VEHICLES-NEXT:      <div>
+// HTML-VEHICLES-NEXT:       <pre><code class="language-cpp 
code-clang-doc">enum Car</code></pre>
 // HTML-VEHICLES-NEXT:      </div>
 // HTML-VEHICLES-NEXT:      <table class="table-wrapper">
 // HTML-VEHICLES-NEXT:          <tbody>
@@ -315,6 +385,13 @@ enum Car {
 // HTML-VEHICLES-NEXT:              </tr>
 // HTML-VEHICLES-NEXT:          </tbody>
 // HTML-VEHICLES-NEXT:      </table>
+// HTML-VEHICLES-NEXT:      <div class="doc-card">
+// HTML-VEHICLES-NEXT:        <div class="nested-delimiter-container">
+// HTML-VEHICLES-NEXT:           <p> specify type of car</p>
+// HTML-VEHICLES-NEXT:        </div>
+// HTML-VEHICLES-NEXT:      </div>
+// HTML-VEHICLES-NEXT:      <p>Defined at line [[@LINE-54]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-VEHICLES-NEXT:    </div>
 
 enum ColorUserSpecified {
   RedUserSpecified = 'A',
@@ -328,7 +405,9 @@ enum ColorUserSpecified {
 // MD-INDEX: | GreenUserSpecified | 2 |
 // MD-INDEX: | BlueUserSpecified | 67 |
 
-// HTML-INDEX-LABEL:    <pre><code class="language-cpp code-clang-doc">enum 
ColorUserSpecified</code></pre>
+// HTML-INDEX-LABEL:  <div id="{{([0-9A-F]{40})}}" class="delimiter-container">
+// HTML-INDEX-NEXT:     <div>
+// HTML-INDEX-NEXT:       <pre><code class="language-cpp code-clang-doc">enum 
ColorUserSpecified</code></pre>
 // HTML-INDEX-NEXT:     </div>
 // HTML-INDEX-NEXT:     <table class="table-wrapper">
 // HTML-INDEX-NEXT:         <tbody>
@@ -350,3 +429,5 @@ enum ColorUserSpecified {
 // HTML-INDEX-NEXT:             </tr>
 // HTML-INDEX-NEXT:         </tbody>
 // HTML-INDEX-NEXT:     </table>
+// HTML-INDEX-NEXT:     <p>Defined at line [[@LINE-36]] of file 
{{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
+// HTML-INDEX-NEXT:   </div>

>From 480e7cb08076447d1becc9e4154aa6a1c365184e Mon Sep 17 00:00:00 2001
From: Samrudh Nelli <[email protected]>
Date: Fri, 20 Feb 2026 16:26:33 +0530
Subject: [PATCH 8/8] clang-format the code

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp | 2 +-
 clang-tools-extra/clang-doc/MDGenerator.cpp   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 0c61da26b89dd..ba8bc77314964 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -560,7 +560,7 @@ static void serializeInfo(const EnumInfo &I, json::Object 
&Obj,
                           const std::optional<StringRef> &RepositoryUrl,
                           const std::optional<StringRef> &RepositoryLine) {
   serializeCommonAttributes(I, Obj, RepositoryUrl, RepositoryLine);
-  if(I.Name.empty())
+  if (I.Name.empty())
     Obj["Name"] = "(unnamed)";
   Obj["Scoped"] = I.Scoped;
 
diff --git a/clang-tools-extra/clang-doc/MDGenerator.cpp 
b/clang-tools-extra/clang-doc/MDGenerator.cpp
index 360786f461088..dd527be28358d 100644
--- a/clang-tools-extra/clang-doc/MDGenerator.cpp
+++ b/clang-tools-extra/clang-doc/MDGenerator.cpp
@@ -159,7 +159,7 @@ static void genMarkdown(const ClangDocContext &CDCtx, const 
EnumInfo &I,
   OS << "| enum ";
   if (I.Scoped)
     OS << "class ";
-  if(I.Name.empty())
+  if (I.Name.empty())
     OS << "(unnamed) ";
   else
     OS << I.Name << " ";

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to