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", _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
