https://github.com/evelez7 updated 
https://github.com/llvm/llvm-project/pull/171699

>From 45d8e8a1662089056d2293c631b617ab22986f60 Mon Sep 17 00:00:00 2001
From: Erick Velez <[email protected]>
Date: Sun, 16 Nov 2025 12:43:44 -0800
Subject: [PATCH] fix unittest

---
 clang-tools-extra/clang-doc/JSONGenerator.cpp |   8 +-
 .../test/clang-doc/json/inheritance.cpp       | 111 ++++++++++++++++++
 .../unittests/clang-doc/JSONGeneratorTest.cpp |   2 +
 3 files changed, 119 insertions(+), 2 deletions(-)
 create mode 100644 clang-tools-extra/test/clang-doc/json/inheritance.cpp

diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp 
b/clang-tools-extra/clang-doc/JSONGenerator.cpp
index 0253ebf5335da..c65c3dc759c3e 100644
--- a/clang-tools-extra/clang-doc/JSONGenerator.cpp
+++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp
@@ -572,12 +572,16 @@ static void serializeInfo(const RecordInfo &I, 
json::Object &Obj,
           serializeInfo(Base, BaseObj, RepositoryUrl);
         });
 
-  if (!I.Parents.empty())
+  if (!I.Parents.empty()) {
     serializeArray(I.Parents, Obj, "Parents", SerializeReferenceLambda);
+    Obj["HasParents"] = true;
+  }
 
-  if (!I.VirtualParents.empty())
+  if (!I.VirtualParents.empty()) {
     serializeArray(I.VirtualParents, Obj, "VirtualParents",
                    SerializeReferenceLambda);
+    Obj["HasVirtualParents"] = true;
+  }
 
   if (I.Template)
     serializeInfo(I.Template.value(), Obj);
diff --git a/clang-tools-extra/test/clang-doc/json/inheritance.cpp 
b/clang-tools-extra/test/clang-doc/json/inheritance.cpp
new file mode 100644
index 0000000000000..53476da870c61
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/json/inheritance.cpp
@@ -0,0 +1,111 @@
+// RUN: rm -rf %t && mkdir -p %t
+// RUN: clang-doc --output=%t --format=json --executor=standalone %s
+// RUN: FileCheck %s < %t/json/GlobalNamespace/_ZTV7MyClass.json
+
+class Virtual {};
+class Foo : virtual Virtual {};
+class Bar : Foo {};
+class Fizz : virtual Virtual {};
+class Buzz : Fizz {};
+
+class MyClass : Bar, Buzz {};
+
+// CHECK:       "Bases": [
+// CHECK-NEXT:    {
+// CHECK-NEXT:     "Access": "private",
+// CHECK-NEXT:      "InfoType": "record",
+// CHECK-NEXT:      "IsParent": true,
+// CHECK-NEXT:      "IsTypedef": false,
+// CHECK-NEXT:      "IsVirtual": false,
+// CHECK-NEXT:      "MangledName": "",
+// CHECK-NEXT:      "Name": "Bar",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "TagType": "struct",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "Access": "private",
+// CHECK-NEXT:      "InfoType": "record",
+// CHECK-NEXT:      "IsParent": false,
+// CHECK-NEXT:      "IsTypedef": false,
+// CHECK-NEXT:      "IsVirtual": false,
+// CHECK-NEXT:      "MangledName": "",
+// CHECK-NEXT:      "Name": "Foo",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "TagType": "struct",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "Access": "private",
+// CHECK-NEXT:      "InfoType": "record",
+// CHECK-NEXT:      "IsParent": false,
+// CHECK-NEXT:      "IsTypedef": false,
+// CHECK-NEXT:      "IsVirtual": true,
+// CHECK-NEXT:      "MangledName": "",
+// CHECK-NEXT:      "Name": "Virtual",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "TagType": "struct",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "Access": "private",
+// CHECK-NEXT:      "InfoType": "record",
+// CHECK-NEXT:      "IsParent": true,
+// CHECK-NEXT:      "IsTypedef": false,
+// CHECK-NEXT:      "IsVirtual": false,
+// CHECK-NEXT:      "MangledName": "",
+// CHECK-NEXT:      "Name": "Buzz",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "TagType": "struct",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "Access": "private",
+// CHECK-NEXT:      "InfoType": "record",
+// CHECK-NEXT:      "IsParent": false,
+// CHECK-NEXT:      "IsTypedef": false,
+// CHECK-NEXT:      "IsVirtual": false,
+// CHECK-NEXT:      "MangledName": "",
+// CHECK-NEXT:      "Name": "Fizz",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "TagType": "struct",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "Access": "private",
+// CHECK-NEXT:      "End": true,
+// CHECK-NEXT:      "InfoType": "record",
+// CHECK-NEXT:      "IsParent": false,
+// CHECK-NEXT:      "IsTypedef": false,
+// CHECK-NEXT:      "IsVirtual": true,
+// CHECK-NEXT:      "MangledName": "",
+// CHECK-NEXT:      "Name": "Virtual",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "TagType": "struct",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    }
+// CHECK-NEXT:  ],
+// CHECK:       "Parents": [
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "Name": "Bar",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "QualName": "Bar",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "End": true,
+// CHECK-NEXT:      "Name": "Buzz",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "QualName": "Buzz",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    }
+// CHECK-NEXT:  ],
+// CHECK:       "VirtualParents": [
+// CHECK-NEXT:    {
+// CHECK-NEXT:      "End": true,
+// CHECK-NEXT:      "Name": "Virtual",
+// CHECK-NEXT:      "Path": "GlobalNamespace",
+// CHECK-NEXT:      "QualName": "Virtual",
+// CHECK-NEXT:      "USR": "{{[0-9A-F]*}}"
+// CHECK-NEXT:    }
+// CHECK-NEXT:  ]
\ No newline at end of file
diff --git a/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp 
b/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp
index d5ce34d2b984c..bcb9fd8e47bc6 100644
--- a/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp
+++ b/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp
@@ -116,8 +116,10 @@ TEST_F(JSONGeneratorTest, emitRecordJSON) {
     }
   ],
   "HasEnums": true,
+  "HasParents": true,
   "HasPublicFunctions": true,
   "HasRecords": true,
+  "HasVirtualParents": true,
   "InfoType": "record",
   "IsTypedef": false,
   "Location": {

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to