[clang-tools-extra] [clang-doc] refactor JSONGenerator array usage (PR #145595)

Erick Velez via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 25 21:47:42 PDT 2025


================
@@ -454,27 +417,19 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
       Obj["ProtectedMembers"] = ProtectedMembersArray;
   }
 
-  if (!I.Bases.empty()) {
-    json::Value BasesArray = Array();
-    json::Array &BasesArrayRef = *BasesArray.getAsArray();
-    BasesArrayRef.reserve(I.Bases.size());
-    for (const auto &BaseInfo : I.Bases) {
-      json::Value BaseInfoVal = Object();
-      auto &BaseInfoObj = *BaseInfoVal.getAsObject();
-      serializeInfo(BaseInfo, BaseInfoObj, RepositoryUrl);
-      BaseInfoObj["IsVirtual"] = BaseInfo.IsVirtual;
-      BaseInfoObj["Access"] = getAccessSpelling(BaseInfo.Access);
-      BaseInfoObj["IsParent"] = BaseInfo.IsParent;
-      BasesArrayRef.push_back(BaseInfoVal);
-    }
-    Obj["Bases"] = BasesArray;
-  }
+  if (!I.Bases.empty())
+    serializeArray(
+        I.Bases, Obj, "Bases",
+        [RepositoryUrl](const BaseRecordInfo &Base, Object &BaseObj) {
----------------
evelez7 wrote:

I changed it to capture by reference, which also let me change all passing of the optional to const references which I needed to change anyways.

https://github.com/llvm/llvm-project/pull/145595


More information about the cfe-commits mailing list