[llvm-branch-commits] [clang-tools-extra] [clang-doc] Serialize private members in JSON (PR #171700)
Erick Velez via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Dec 10 12:57:53 PST 2025
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 <erickvelez7 at gmail.com>
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",
More information about the llvm-branch-commits
mailing list