[clang-tools-extra] 5e3549a - [clang-doc] Serialize private members in JSON (#171700)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 11 11:00:45 PST 2025
Author: Erick Velez
Date: 2025-12-11T11:00:40-08:00
New Revision: 5e3549ab7a5fbdbd4ba4fec27997e0772684b01e
URL: https://github.com/llvm/llvm-project/commit/5e3549ab7a5fbdbd4ba4fec27997e0772684b01e
DIFF: https://github.com/llvm/llvm-project/commit/5e3549ab7a5fbdbd4ba4fec27997e0772684b01e.diff
LOG: [clang-doc] Serialize private members in JSON (#171700)
Added:
Modified:
clang-tools-extra/clang-doc/JSONGenerator.cpp
clang-tools-extra/test/clang-doc/json/class.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index c65c3dc759c3e..c47c65ddc2d73 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -545,6 +545,8 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
json::Array &PubMembersArrayRef = *PublicMembersArray.getAsArray();
json::Value ProtectedMembersArray = Array();
json::Array &ProtMembersArrayRef = *ProtectedMembersArray.getAsArray();
+ json::Value PrivateMembersArray = Array();
+ json::Array &PrivateMembersArrayRef = *PrivateMembersArray.getAsArray();
for (const MemberTypeInfo &Member : I.Members) {
json::Value MemberVal = Object();
@@ -557,12 +559,16 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
PubMembersArrayRef.push_back(MemberVal);
else if (Member.Access == AccessSpecifier::AS_protected)
ProtMembersArrayRef.push_back(MemberVal);
+ else if (Member.Access == AccessSpecifier::AS_private)
+ PrivateMembersArrayRef.push_back(MemberVal);
}
if (!PubMembersArrayRef.empty())
insertArray(Obj, PublicMembersArray, "PublicMembers");
if (!ProtMembersArrayRef.empty())
Obj["ProtectedMembers"] = ProtectedMembersArray;
+ if (!PrivateMembersArrayRef.empty())
+ insertArray(Obj, PrivateMembersArray, "PrivateMembers");
}
if (!I.Bases.empty())
diff --git a/clang-tools-extra/test/clang-doc/json/class.cpp b/clang-tools-extra/test/clang-doc/json/class.cpp
index 9d3102a11db9d..d57e8a990c3fe 100644
--- a/clang-tools-extra/test/clang-doc/json/class.cpp
+++ b/clang-tools-extra/test/clang-doc/json/class.cpp
@@ -30,6 +30,8 @@ struct MyClass {
int protectedMethod();
int ProtectedField;
+private:
+ int PrivateField;
};
// CHECK: {
@@ -122,6 +124,7 @@ struct MyClass {
// CHECK-NEXT: }
// CHECK-NEXT: ],
// CHECK-NEXT: "HasEnums": true,
+// CHECK-NEXT: "HasPrivateMembers": true,
// CHECK-NEXT: "HasPublicFunctions": true,
// CHECK-NEXT: "HasPublicMembers": true,
// CHECK-NEXT: "HasRecords": true,
@@ -137,6 +140,13 @@ struct MyClass {
// CHECK-NEXT: "GlobalNamespace"
// CHECK-NEXT: ],
// CHECK-NEXT: "Path": "GlobalNamespace",
+// CHECK-NEXT: "PrivateMembers": [
+// CHECK-NEXT: {
+// CHECK-NEXT: "IsStatic": false,
+// CHECK-NEXT: "Name": "PrivateField",
+// CHECK-NEXT: "Type": "int"
+// CHECK-NEXT: }
+// CHECK-NEXT: ],
// CHECK-NEXT: "ProtectedFunctions": [
// CHECK-NEXT: {
// CHECK-NEXT: "InfoType": "function",
More information about the cfe-commits
mailing list