[llvm-branch-commits] [clang-tools-extra] [clang-doc] Add variables to the namespace HTML template (PR #175226)
Erick Velez via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 9 19:31:31 PST 2026
https://github.com/evelez7 updated https://github.com/llvm/llvm-project/pull/175226
>From 8f8d9f70dd3dd4e9ecb2187505fec6a82789adea Mon Sep 17 00:00:00 2001
From: Erick Velez <erickvelez7 at gmail.com>
Date: Thu, 8 Jan 2026 22:06:51 -0800
Subject: [PATCH] [clang-doc] Add variables to the namespace HTML template
---
clang-tools-extra/clang-doc/JSONGenerator.cpp | 4 ++-
.../assets/namespace-template.mustache | 31 +++++++++++++++++++
.../test/clang-doc/json/namespace.cpp | 20 +++++++++---
3 files changed, 50 insertions(+), 5 deletions(-)
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 llvm-branch-commits
mailing list