Skip to content

Conversation

@evelez7
Copy link
Member

@evelez7 evelez7 commented Jan 9, 2026

No description provided.

@llvmbot
Copy link
Member

llvmbot commented Jan 9, 2026

@llvm/pr-subscribers-clang-tools-extra

Author: Erick Velez (evelez7)

Changes

Full diff: https://github.com/llvm/llvm-project/pull/175226.diff

3 Files Affected:

  • (modified) clang-tools-extra/clang-doc/JSONGenerator.cpp (+3-1)
  • (modified) clang-tools-extra/clang-doc/assets/namespace-template.mustache (+31)
  • (modified) clang-tools-extra/test/clang-doc/json/namespace.cpp (+16-4)
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 12d439c6acbe4..9863749c233b4 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -752,8 +752,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 fc0b9e2c388d9..e4d61f1823f86 100644
--- a/clang-tools-extra/clang-doc/assets/namespace-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/namespace-template.mustache
@@ -111,6 +111,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>
@@ -191,6 +207,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>

Copy link
Member Author

evelez7 commented Jan 9, 2026

@evelez7 evelez7 force-pushed the users/evelez7/clang-doc-repository-url-templates branch from 085d7a3 to aa58492 Compare January 10, 2026 03:31
@evelez7 evelez7 force-pushed the users/evelez7/clang-doc-global-variables-html branch from 4469576 to 8f8d9f7 Compare January 10, 2026 03:31
Base automatically changed from users/evelez7/clang-doc-repository-url-templates to main January 10, 2026 04:07
@evelez7 evelez7 force-pushed the users/evelez7/clang-doc-global-variables-html branch from 8f8d9f7 to 3ab5d53 Compare January 10, 2026 04:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants