Skip to content

[clang-doc] Add protected members to class template#174883

Merged
evelez7 merged 1 commit intomainfrom
users/evelez7/clang-doc-protected-members
Jan 8, 2026
Merged

[clang-doc] Add protected members to class template#174883
evelez7 merged 1 commit intomainfrom
users/evelez7/clang-doc-protected-members

Conversation

@evelez7
Copy link
Member

@evelez7 evelez7 commented Jan 7, 2026

There were already tags for protected members in the Mustache template,
but didn't use the proper tags for the newer JSON scheme.

There were already tags for protected members in the Mustache template,
but didn't use the proper tags for the newer JSON scheme.
@evelez7 evelez7 requested review from ilovepi and petrhosek January 7, 2026 23:11
@evelez7 evelez7 marked this pull request as ready for review January 7, 2026 23:11
@llvmbot
Copy link
Member

llvmbot commented Jan 7, 2026

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

Author: Erick Velez (evelez7)

Changes

There were already tags for protected members in the Mustache template,
but didn't use the proper tags for the newer JSON scheme.


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

4 Files Affected:

  • (modified) clang-tools-extra/clang-doc/JSONGenerator.cpp (+1-1)
  • (modified) clang-tools-extra/clang-doc/assets/class-template.mustache (+9-14)
  • (modified) clang-tools-extra/test/clang-doc/json/class.cpp (+9)
  • (modified) clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp (+1)
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 2dbc4186a32cc..fab54591b8faa 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -657,7 +657,7 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
     if (!PubMembersArrayRef.empty())
       insertArray(Obj, PublicMembersArray, "PublicMembers");
     if (!ProtMembersArrayRef.empty())
-      Obj["ProtectedMembers"] = ProtectedMembersArray;
+      insertArray(Obj, ProtectedMembersArray, "ProtectedMembers");
     if (!PrivateMembersArrayRef.empty())
       insertArray(Obj, PrivateMembersArray, "PrivateMembers");
   }
diff --git a/clang-tools-extra/clang-doc/assets/class-template.mustache b/clang-tools-extra/clang-doc/assets/class-template.mustache
index 498fc5f079901..19e6e6adf1b44 100644
--- a/clang-tools-extra/clang-doc/assets/class-template.mustache
+++ b/clang-tools-extra/clang-doc/assets/class-template.mustache
@@ -31,22 +31,22 @@
                         </details>
                     </li>
                     {{/HasPublicMembers}}
-                    {{#ProtectedMembers}}
+                    {{#HasProtectedMembers}}
                     <li>
                         <details open>
                             <summary class="sidebar-section">
-                                <a class="sidebar-item" href="#PublicMethods">Protected Members</a>
+                                <a class="sidebar-item" href="#ProtectedMembers">Protected Members</a>
                             </summary>
                             <ul>
-                                {{#Obj}}
+                                {{#ProtectedMembers}}
                                 <li class="sidebar-item-container">
                                     <a class="sidebar-item" href="#{{Name}}">{{Name}}</a>
                                 </li>
-                                {{/Obj}}
+                                {{/ProtectedMembers}}
                             </ul>
                         </details>
                     </li>
-                    {{/ProtectedMembers}}
+                    {{/HasProtectedMembers}}
                     {{#HasPublicFunctions}}
                     <li>
                         <details open>
@@ -178,23 +178,18 @@
                     </div>
                 </section>
                 {{/HasPublicMembers}}
-                {{#ProtectedMembers}}
+                {{#HasProtectedMembers}}
                 <section id="ProtectedMembers" class="section-container">
                     <h2>Protected Members</h2>
                     <div>
-                        {{#Obj}}
+                        {{#ProtectedMembers}}
                         <div id="{{Name}}" class="delimiter-container">
                             <pre><code class="language-cpp code-clang-doc" >{{#IsStatic}}static {{/IsStatic}}{{Type}} {{Name}}</code></pre>
-                            {{#MemberComments}}
-                            <div>
-                                {{>Comments}}
-                            </div>
-                            {{/MemberComments}}
                         </div>
-                        {{/Obj}}
+                        {{/ProtectedMembers}}
                     </div>
                 </section>
-                {{/ProtectedMembers}}
+                {{/HasProtectedMembers}}
                 {{#HasPublicFunctions}}
                 <section id="PublicMethods" class="section-container">
                     <h2>Public Methods</h2>
diff --git a/clang-tools-extra/test/clang-doc/json/class.cpp b/clang-tools-extra/test/clang-doc/json/class.cpp
index 9b45f86ff3292..6356aee14c16c 100644
--- a/clang-tools-extra/test/clang-doc/json/class.cpp
+++ b/clang-tools-extra/test/clang-doc/json/class.cpp
@@ -170,6 +170,7 @@ struct MyClass {
 // CHECK-NEXT:    "HasEnums": true,
 // CHECK-NEXT:    "HasFriends": true,
 // CHECK-NEXT:    "HasPrivateMembers": true,
+// CHECK-NEXT:    "HasProtectedMembers": true,
 // CHECK-NEXT:    "HasPublicFunctions": true,
 // CHECK-NEXT:    "HasPublicMembers": true,
 // CHECK-NEXT:    "HasRecords": true,
@@ -320,6 +321,14 @@ struct MyClass {
 // HTML-NEXT:         </li>
 // HTML-NEXT:     </ul>
 // HTML-NEXT: </details>
+// HTML:      <section id="ProtectedMembers" class="section-container">
+// HTML-NEXT:     <h2>Protected Members</h2>
+// HTML-NEXT:     <div>
+// HTML-NEXT:         <div id="ProtectedField" class="delimiter-container">
+// HTML-NEXT:             <pre><code class="language-cpp code-clang-doc" >int ProtectedField</code></pre>
+// HTML-NEXT:         </div>
+// HTML-NEXT:     </div>
+// HTML-NEXT: </section>
 // HTML:      <section id="Classes" class="section-container">
 // HTML-NEXT:     <h2>Inner Classes</h2>
 // HTML-NEXT:     <ul class="class-container">
diff --git a/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp
index ee2c11061d706..d4260ebae3123 100644
--- a/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp
@@ -117,6 +117,7 @@ TEST_F(JSONGeneratorTest, emitRecordJSON) {
   ],
   "HasEnums": true,
   "HasParents": true,
+  "HasProtectedMembers": true,
   "HasPublicFunctions": true,
   "HasRecords": true,
   "HasVirtualParents": true,

Copy link
Member Author

evelez7 commented Jan 7, 2026

Copy link
Contributor

@ilovepi ilovepi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch!

Copy link
Member Author

evelez7 commented Jan 8, 2026

Merge activity

  • Jan 8, 6:10 AM UTC: A user started a stack merge that includes this pull request via Graphite.
  • Jan 8, 6:11 AM UTC: @evelez7 merged this pull request with Graphite.

@evelez7 evelez7 merged commit fb7e805 into main Jan 8, 2026
14 checks passed
@evelez7 evelez7 deleted the users/evelez7/clang-doc-protected-members branch January 8, 2026 06:11
kshitijvp pushed a commit to kshitijvp/llvm-project that referenced this pull request Jan 9, 2026
There were already tags for protected members in the Mustache template,
but didn't use the proper tags for the newer JSON scheme.
Priyanshu3820 pushed a commit to Priyanshu3820/llvm-project that referenced this pull request Jan 18, 2026
There were already tags for protected members in the Mustache template,
but didn't use the proper tags for the newer JSON scheme.
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.

3 participants