https://github.com/evelez7 created https://github.com/llvm/llvm-project/pull/171700
None >From 619542606b3cc6b89b3012d37fcc5fe6eabf2c33 Mon Sep 17 00:00:00 2001 From: Erick Velez <[email protected]> Date: Sun, 16 Nov 2025 13:38:47 -0800 Subject: [PATCH] [clang-doc] Serialize private members in JSON --- clang-tools-extra/clang-doc/JSONGenerator.cpp | 6 ++++++ clang-tools-extra/test/clang-doc/json/class.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+) 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", _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
