Skip to content

Commit a0298a6

Browse files
committed
fix unittest
1 parent dc830ae commit a0298a6

File tree

3 files changed

+119
-2
lines changed

3 files changed

+119
-2
lines changed

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -572,12 +572,16 @@ static void serializeInfo(const RecordInfo &I, json::Object &Obj,
572572
serializeInfo(Base, BaseObj, RepositoryUrl);
573573
});
574574

575-
if (!I.Parents.empty())
575+
if (!I.Parents.empty()) {
576576
serializeArray(I.Parents, Obj, "Parents", SerializeReferenceLambda);
577+
Obj["HasParents"] = true;
578+
}
577579

578-
if (!I.VirtualParents.empty())
580+
if (!I.VirtualParents.empty()) {
579581
serializeArray(I.VirtualParents, Obj, "VirtualParents",
580582
SerializeReferenceLambda);
583+
Obj["HasVirtualParents"] = true;
584+
}
581585

582586
if (I.Template)
583587
serializeInfo(I.Template.value(), Obj);
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
// RUN: rm -rf %t && mkdir -p %t
2+
// RUN: clang-doc --output=%t --format=json --executor=standalone %s
3+
// RUN: FileCheck %s < %t/json/GlobalNamespace/_ZTV7MyClass.json
4+
5+
class Virtual {};
6+
class Foo : virtual Virtual {};
7+
class Bar : Foo {};
8+
class Fizz : virtual Virtual {};
9+
class Buzz : Fizz {};
10+
11+
class MyClass : Bar, Buzz {};
12+
13+
// CHECK: "Bases": [
14+
// CHECK-NEXT: {
15+
// CHECK-NEXT: "Access": "private",
16+
// CHECK-NEXT: "InfoType": "record",
17+
// CHECK-NEXT: "IsParent": true,
18+
// CHECK-NEXT: "IsTypedef": false,
19+
// CHECK-NEXT: "IsVirtual": false,
20+
// CHECK-NEXT: "MangledName": "",
21+
// CHECK-NEXT: "Name": "Bar",
22+
// CHECK-NEXT: "Path": "GlobalNamespace",
23+
// CHECK-NEXT: "TagType": "struct",
24+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
25+
// CHECK-NEXT: },
26+
// CHECK-NEXT: {
27+
// CHECK-NEXT: "Access": "private",
28+
// CHECK-NEXT: "InfoType": "record",
29+
// CHECK-NEXT: "IsParent": false,
30+
// CHECK-NEXT: "IsTypedef": false,
31+
// CHECK-NEXT: "IsVirtual": false,
32+
// CHECK-NEXT: "MangledName": "",
33+
// CHECK-NEXT: "Name": "Foo",
34+
// CHECK-NEXT: "Path": "GlobalNamespace",
35+
// CHECK-NEXT: "TagType": "struct",
36+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
37+
// CHECK-NEXT: },
38+
// CHECK-NEXT: {
39+
// CHECK-NEXT: "Access": "private",
40+
// CHECK-NEXT: "InfoType": "record",
41+
// CHECK-NEXT: "IsParent": false,
42+
// CHECK-NEXT: "IsTypedef": false,
43+
// CHECK-NEXT: "IsVirtual": true,
44+
// CHECK-NEXT: "MangledName": "",
45+
// CHECK-NEXT: "Name": "Virtual",
46+
// CHECK-NEXT: "Path": "GlobalNamespace",
47+
// CHECK-NEXT: "TagType": "struct",
48+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
49+
// CHECK-NEXT: },
50+
// CHECK-NEXT: {
51+
// CHECK-NEXT: "Access": "private",
52+
// CHECK-NEXT: "InfoType": "record",
53+
// CHECK-NEXT: "IsParent": true,
54+
// CHECK-NEXT: "IsTypedef": false,
55+
// CHECK-NEXT: "IsVirtual": false,
56+
// CHECK-NEXT: "MangledName": "",
57+
// CHECK-NEXT: "Name": "Buzz",
58+
// CHECK-NEXT: "Path": "GlobalNamespace",
59+
// CHECK-NEXT: "TagType": "struct",
60+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
61+
// CHECK-NEXT: },
62+
// CHECK-NEXT: {
63+
// CHECK-NEXT: "Access": "private",
64+
// CHECK-NEXT: "InfoType": "record",
65+
// CHECK-NEXT: "IsParent": false,
66+
// CHECK-NEXT: "IsTypedef": false,
67+
// CHECK-NEXT: "IsVirtual": false,
68+
// CHECK-NEXT: "MangledName": "",
69+
// CHECK-NEXT: "Name": "Fizz",
70+
// CHECK-NEXT: "Path": "GlobalNamespace",
71+
// CHECK-NEXT: "TagType": "struct",
72+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
73+
// CHECK-NEXT: },
74+
// CHECK-NEXT: {
75+
// CHECK-NEXT: "Access": "private",
76+
// CHECK-NEXT: "End": true,
77+
// CHECK-NEXT: "InfoType": "record",
78+
// CHECK-NEXT: "IsParent": false,
79+
// CHECK-NEXT: "IsTypedef": false,
80+
// CHECK-NEXT: "IsVirtual": true,
81+
// CHECK-NEXT: "MangledName": "",
82+
// CHECK-NEXT: "Name": "Virtual",
83+
// CHECK-NEXT: "Path": "GlobalNamespace",
84+
// CHECK-NEXT: "TagType": "struct",
85+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
86+
// CHECK-NEXT: }
87+
// CHECK-NEXT: ],
88+
// CHECK: "Parents": [
89+
// CHECK-NEXT: {
90+
// CHECK-NEXT: "Name": "Bar",
91+
// CHECK-NEXT: "Path": "GlobalNamespace",
92+
// CHECK-NEXT: "QualName": "Bar",
93+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
94+
// CHECK-NEXT: },
95+
// CHECK-NEXT: {
96+
// CHECK-NEXT: "End": true,
97+
// CHECK-NEXT: "Name": "Buzz",
98+
// CHECK-NEXT: "Path": "GlobalNamespace",
99+
// CHECK-NEXT: "QualName": "Buzz",
100+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
101+
// CHECK-NEXT: }
102+
// CHECK-NEXT: ],
103+
// CHECK: "VirtualParents": [
104+
// CHECK-NEXT: {
105+
// CHECK-NEXT: "End": true,
106+
// CHECK-NEXT: "Name": "Virtual",
107+
// CHECK-NEXT: "Path": "GlobalNamespace",
108+
// CHECK-NEXT: "QualName": "Virtual",
109+
// CHECK-NEXT: "USR": "{{[0-9A-F]*}}"
110+
// CHECK-NEXT: }
111+
// CHECK-NEXT: ]

clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,10 @@ TEST_F(JSONGeneratorTest, emitRecordJSON) {
116116
}
117117
],
118118
"HasEnums": true,
119+
"HasParents": true,
119120
"HasPublicFunctions": true,
120121
"HasRecords": true,
122+
"HasVirtualParents": true,
121123
"InfoType": "record",
122124
"IsTypedef": false,
123125
"Location": {

0 commit comments

Comments
 (0)