Build member layouts for recursive lambda sets

This commit is contained in:
Ayaz Hafiz 2022-08-09 14:44:09 -07:00
parent a4bb6879bc
commit ba2768c9b0
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58

View file

@ -910,7 +910,23 @@ impl<'a> LambdaSet<'a> {
union_layout: *union,
}
}
UnionLayout::Recursive(_) => todo!("recursive closures"),
UnionLayout::Recursive(_) => {
let (index, (name, fields)) = self
.set
.iter()
.enumerate()
.find(|(_, (s, layouts))| comparator(*s, layouts))
.unwrap();
let closure_name = *name;
ClosureRepresentation::Union {
tag_id: index as TagIdIntType,
alphabetic_order_fields: fields,
closure_name,
union_layout: *union,
}
}
UnionLayout::NonNullableUnwrapped(_) => todo!("recursive closures"),
UnionLayout::NullableWrapped {
nullable_id: _,