[clang-tools-extra] 8042c93 - [clang-doc] Add variables to the namespace HTML template (#175226)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 12 10:54:11 PST 2026
Author: Erick Velez
Date: 2026-01-12T10:54:06-08:00
New Revision: 8042c93a58341cbaa80d7ff2a7a681dc840dffa4
URL: https://github.com/llvm/llvm-project/commit/8042c93a58341cbaa80d7ff2a7a681dc840dffa4
DIFF: https://github.com/llvm/llvm-project/commit/8042c93a58341cbaa80d7ff2a7a681dc840dffa4.diff
LOG: [clang-doc] Add variables to the namespace HTML template (#175226)
Added:
Modified:
clang-tools-extra/clang-doc/JSONGenerator.cpp
clang-tools-extra/clang-doc/assets/namespace-template.mustache
clang-tools-extra/test/clang-doc/json/namespace.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index ec234db19ed1a..1757293cbeebd 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -755,8 +755,10 @@ static void serializeInfo(const NamespaceInfo &I, json::Object &Obj,
Obj["HasConcepts"] = true;
}
- if (!I.Children.Variables.empty())
+ if (!I.Children.Variables.empty()) {
serializeArray(I.Children.Variables, Obj, "Variables", SerializeInfo);
+ Obj["HasVariables"] = true;
+ }
serializeCommonChildren(I.Children, Obj, RepositoryUrl, RepositoryLinePrefix);
}
diff --git a/clang-tools-extra/clang-doc/assets/namespace-template.mustache b/clang-tools-extra/clang-doc/assets/namespace-template.mustache
index 04c31fb140962..7fbbfa69f7f89 100644
--- a/clang-tools-extra/clang-doc/assets/namespace-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/namespace-template.mustache
@@ -113,6 +113,22 @@
</details>
</li>
{{/HasTypedefs}}
+ {{#HasVariables}}
+ <li>
+ <details open>
+ <summary class="sidebar-section">
+ <a class="sidebar-item" href="#Variables">Variables</a>
+ </summary>
+ <ul>
+ {{#Variables}}
+ <li class="sidebar-item-container">
+ <a class="sidebar-item" href="#{{USR}}">{{Name}}</a>
+ </li>
+ {{/Variables}}
+ </ul>
+ </details>
+ </li>
+ {{/HasVariables}}
</ul>
</div>
<div class="resizer" id="resizer"></div>
@@ -193,6 +209,21 @@
{{/Typedefs}}
</section>
{{/HasTypedefs}}
+ {{#HasVariables}}
+ <section id="Variables" class="section-container">
+ <h2>Variables</h2>
+ <div>
+ {{#Variables}}
+ <div id="{{USR}}" class="delimiter-container">
+ <pre><code class="language-cpp code-clang-doc" >{{#IsStatic}}static {{/IsStatic}}{{Type.QualName}} {{Name}}</code></pre>
+ {{#Location}}
+ <p>Defined at line {{LineNumber}} of file {{^FileURL}}{{Filename}}{{/FileURL}}{{#FileURL}}<a href="{{FileURL}}">{{Filename}}</a>{{/FileURL}}</p>
+ {{/Location}}
+ </div>
+ {{/Variables}}
+ </div>
+ </section>
+ {{/HasVariables}}
</div>
</div>
</main>
diff --git a/clang-tools-extra/test/clang-doc/json/namespace.cpp b/clang-tools-extra/test/clang-doc/json/namespace.cpp
index 34f4eb3cb8f81..8681c15bf1048 100644
--- a/clang-tools-extra/test/clang-doc/json/namespace.cpp
+++ b/clang-tools-extra/test/clang-doc/json/namespace.cpp
@@ -1,6 +1,7 @@
// RUN: rm -rf %t && mkdir -p %t
-// RUN: clang-doc --output=%t --format=json --executor=standalone %s
+// RUN: clang-doc --output=%t --format=html --executor=standalone %s
// RUN: FileCheck %s < %t/json/GlobalNamespace/index.json
+// RUN: FileCheck %s < %t/html/GlobalNamespace/index.html -check-prefix=HTML-CHECK
class MyClass {};
@@ -27,7 +28,7 @@ typedef int MyTypedef;
// CHECK-NEXT: "InfoType": "enum",
// CHECK-NEXT: "Location": {
// CHECK-NEXT: "Filename": "{{.*}}namespace.cpp",
-// CHECK-NEXT: "LineNumber": 14
+// CHECK-NEXT: "LineNumber": 15
// CHECK-NEXT: },
// CHECK-NEXT: "Members": [
// CHECK-NEXT: {
@@ -81,6 +82,7 @@ typedef int MyTypedef;
// CHECK-NEXT: "HasNamespaces": true,
// CHECK-NEXT: "HasRecords": true,
// CHECK-NEXT: "HasTypedefs": true,
+// CHECK-NEXT: "HasVariables": true,
// CHECK-NEXT: "InfoType": "namespace",
// CHECK-NEXT: "Name": "Global Namespace",
// CHECK-NEXT: "Namespaces": [
@@ -108,7 +110,7 @@ typedef int MyTypedef;
// CHECK-NEXT: "IsUsing": false,
// CHECK-NEXT: "Location": {
// CHECK-NEXT: "Filename": "{{.*}}namespace.cpp",
-// CHECK-NEXT: "LineNumber": 20
+// CHECK-NEXT: "LineNumber": 21
// CHECK-NEXT: },
// CHECK-NEXT: "Name": "MyTypedef",
// CHECK-NEXT: "TypeDeclaration": "",
@@ -130,7 +132,7 @@ typedef int MyTypedef;
// CHECK-NEXT: "IsStatic": true,
// CHECK-NEXT: "Location": {
// CHECK-NEXT: "Filename": "{{.*}}namespace.cpp",
-// CHECK-NEXT: "LineNumber": 12
+// CHECK-NEXT: "LineNumber": 13
// CHECK-NEXT: },
// CHECK-NEXT: "Name": "Global",
// CHECK-NEXT: "Type": {
@@ -144,3 +146,13 @@ typedef int MyTypedef;
// CHECK-NEXT: }
// CHECK-NEXT: ]
// CHECK-NEXT: }
+
+// HTML-CHECK: <section id="Variables" class="section-container">
+// HTML-CHECK-NEXT: <h2>Variables</h2>
+// HTML-CHECK-NEXT: <div>
+// HTML-CHECK-NEXT: <div id="{{([0-9A-F]{40})}}" class="delimiter-container">
+// HTML-CHECK-NEXT: <pre><code class="language-cpp code-clang-doc" >static int Global</code></pre>
+// HTML-CHECK-NEXT: <p>Defined at line 13 of file {{.*}}namespace.cpp</p>
+// HTML-CHECK-NEXT: </div>
+// HTML-CHECK-NEXT: </div>
+// HTML-CHECK-NEXT: </section>
More information about the cfe-commits
mailing list