Skip to content

Commit 6a8c6c7

Browse files
committed
Flattener: Pull up children of children
1 parent 56b5873 commit 6a8c6c7

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed

oi/type_graph/Flattener.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,13 @@ void Flattener::visit(Class& c) {
205205
for (const auto& child : c.children) {
206206
accept(child);
207207
}
208+
209+
// Pull in children from flattened children
210+
// This may result in duplicates, but that shouldn't be a big deal
211+
for (const Class& child : c.children) {
212+
c.children.insert(c.children.end(), child.children.begin(),
213+
child.children.end());
214+
}
208215
}
209216

210217
void Flattener::visit(Container& c) {

oi/type_graph/Printer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ void Printer::print_function(const Function& function) {
204204
void Printer::print_child(const Type& child) {
205205
depth_++;
206206
prefix();
207-
out_ << "Child:" << std::endl;
207+
out_ << "Child" << std::endl;
208208
print(child);
209209
depth_--;
210210
}

oi/type_graph/Types.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ class Class : public Type {
235235
std::vector<Parent> parents; // Sorted by offset
236236
std::vector<Member> members; // Sorted by offset
237237
std::vector<Function> functions;
238-
std::vector<std::reference_wrapper<Type>>
238+
std::vector<std::reference_wrapper<Class>>
239239
children; // Only for dynamic classes
240240

241241
private:

test/test_flattener.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,7 @@ TEST(FlattenerTest, Children) {
625625
[0] Class: ClassB (size: 4)
626626
Member: b (offset: 0)
627627
Primitive: int32_t
628-
Child:
628+
Child
629629
[1] Class: ClassA (size: 8)
630630
Member: b (offset: 0)
631631
Primitive: int32_t
@@ -665,13 +665,13 @@ TEST(FlattenerTest, ChildrenTwoDeep) {
665665
[0] Class: ClassD (size: 4)
666666
Member: d (offset: 0)
667667
Primitive: int32_t
668-
Child:
668+
Child
669669
[1] Class: ClassB (size: 8)
670670
Member: d (offset: 0)
671671
Primitive: int32_t
672672
Member: b (offset: 4)
673673
Primitive: int32_t
674-
Child:
674+
Child
675675
[2] Class: ClassA (size: 16)
676676
Member: d (offset: 0)
677677
Primitive: int32_t
@@ -681,6 +681,8 @@ TEST(FlattenerTest, ChildrenTwoDeep) {
681681
Primitive: int32_t
682682
Member: a (offset: 12)
683683
Primitive: int32_t
684+
Child
685+
[2]
684686
)");
685687
}
686688

0 commit comments

Comments
 (0)