CHECKPOINT: Everything builds again.
This commit is contained in:
@@ -6,14 +6,78 @@ impl Program {
|
||||
pub fn pretty<'a>(&self, allocator: &'a Allocator<'a>) -> DocBuilder<'a, Allocator<'a>> {
|
||||
let mut result = allocator.nil();
|
||||
|
||||
for tl in self.items.iter() {
|
||||
for definition in self.structures.values() {
|
||||
result = result
|
||||
.append(tl.pretty(allocator))
|
||||
.append(allocator.text(";"))
|
||||
.append(allocator.text("struct"))
|
||||
.append(allocator.space())
|
||||
.append(allocator.text(definition.name.original_name().to_string()))
|
||||
.append(allocator.space())
|
||||
.append(allocator.text("{"))
|
||||
.append(allocator.hardline())
|
||||
.append(
|
||||
allocator
|
||||
.concat(definition.fields.iter().map(|(name, ty)| {
|
||||
let mut type_bit = allocator.nil();
|
||||
|
||||
if let Some(ty) = ty {
|
||||
type_bit = allocator
|
||||
.text(":")
|
||||
.append(allocator.space())
|
||||
.append(ty.pretty(allocator));
|
||||
}
|
||||
|
||||
allocator
|
||||
.text(name.original_name().to_string())
|
||||
.append(type_bit)
|
||||
.append(allocator.text(";"))
|
||||
.append(allocator.hardline())
|
||||
}))
|
||||
.nest(2),
|
||||
)
|
||||
.append(allocator.text("}"))
|
||||
.append(allocator.hardline());
|
||||
}
|
||||
|
||||
result
|
||||
for definition in self.functions.values() {
|
||||
let mut return_type_bit = allocator.nil();
|
||||
|
||||
if let Some(rettype) = definition.return_type.as_ref() {
|
||||
return_type_bit = allocator
|
||||
.text("->")
|
||||
.append(allocator.space())
|
||||
.append(rettype.pretty(allocator));
|
||||
}
|
||||
|
||||
result = result
|
||||
.append(allocator.text("function"))
|
||||
.append(allocator.space())
|
||||
.append(allocator.text(definition.name.original_name().to_string()))
|
||||
.append(allocator.text("("))
|
||||
.append(allocator.intersperse(
|
||||
definition.arguments.iter().map(|(x, t)| {
|
||||
let mut type_bit = allocator.nil();
|
||||
|
||||
if let Some(ty) = t {
|
||||
type_bit = allocator
|
||||
.text(":")
|
||||
.append(allocator.space())
|
||||
.append(ty.pretty(allocator));
|
||||
}
|
||||
|
||||
allocator
|
||||
.text(x.original_name().to_string())
|
||||
.append(type_bit)
|
||||
}),
|
||||
allocator.text(","),
|
||||
))
|
||||
.append(allocator.text(")"))
|
||||
.append(return_type_bit)
|
||||
.append(allocator.softline())
|
||||
.append(definition.body.pretty(allocator))
|
||||
.append(allocator.hardline());
|
||||
}
|
||||
|
||||
result.append(self.body.pretty(allocator))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user