Skip to content

Commit 5e3549a

Browse files
authored
[clang-doc] Serialize private members in JSON (#171700)
1 parent 75cd29b commit 5e3549a

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

clang-tools-extra/clang-doc/JSONGenerator.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,8 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
545545
json::Array &PubMembersArrayRef = *PublicMembersArray.getAsArray();
546546
json::Value ProtectedMembersArray = Array();
547547
json::Array &ProtMembersArrayRef = *ProtectedMembersArray.getAsArray();
548+
json::Value PrivateMembersArray = Array();
549+
json::Array &PrivateMembersArrayRef = *PrivateMembersArray.getAsArray();
548550

549551
for (const MemberTypeInfo &Member : I.Members) {
550552
json::Value MemberVal = Object();
@@ -557,12 +559,16 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
557559
PubMembersArrayRef.push_back(MemberVal);
558560
else if (Member.Access == AccessSpecifier::AS_protected)
559561
ProtMembersArrayRef.push_back(MemberVal);
562+
else if (Member.Access == AccessSpecifier::AS_private)
563+
PrivateMembersArrayRef.push_back(MemberVal);
560564
}
561565

562566
if (!PubMembersArrayRef.empty())
563567
insertArray(Obj, PublicMembersArray, "PublicMembers");
564568
if (!ProtMembersArrayRef.empty())
565569
Obj["ProtectedMembers"] = ProtectedMembersArray;
570+
if (!PrivateMembersArrayRef.empty())
571+
insertArray(Obj, PrivateMembersArray, "PrivateMembers");
566572
}
567573

568574
if (!I.Bases.empty())

clang-tools-extra/test/clang-doc/json/class.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ struct MyClass {
3030
int protectedMethod();
3131

3232
int ProtectedField;
33+
private:
34+
int PrivateField;
3335
};
3436

3537
// CHECK: {
@@ -122,6 +124,7 @@ struct MyClass {
122124
// CHECK-NEXT: }
123125
// CHECK-NEXT: ],
124126
// CHECK-NEXT: "HasEnums": true,
127+
// CHECK-NEXT: "HasPrivateMembers": true,
125128
// CHECK-NEXT: "HasPublicFunctions": true,
126129
// CHECK-NEXT: "HasPublicMembers": true,
127130
// CHECK-NEXT: "HasRecords": true,
@@ -137,6 +140,13 @@ struct MyClass {
137140
// CHECK-NEXT: "GlobalNamespace"
138141
// CHECK-NEXT: ],
139142
// CHECK-NEXT: "Path": "GlobalNamespace",
143+
// CHECK-NEXT: "PrivateMembers": [
144+
// CHECK-NEXT: {
145+
// CHECK-NEXT: "IsStatic": false,
146+
// CHECK-NEXT: "Name": "PrivateField",
147+
// CHECK-NEXT: "Type": "int"
148+
// CHECK-NEXT: }
149+
// CHECK-NEXT: ],
140150
// CHECK-NEXT: "ProtectedFunctions": [
141151
// CHECK-NEXT: {
142152
// CHECK-NEXT: "InfoType": "function",

0 commit comments

Comments
 (0)