Function renderTree [src]
Prototype
pub fn renderTree(gpa: Allocator, w: *Writer, tree: Ast, fixups: Fixups) Error!void Parameters
gpa: Allocatorw: *Writertree: Astfixups: Fixups Possible Errors
Ran out of memory allocating call stack frames to complete rendering.
Transitive failure from
Source
pub fn renderTree(gpa: Allocator, w: *Writer, tree: Ast, fixups: Fixups) Error!void {
assert(tree.errors.len == 0); // Cannot render an invalid tree.
var auto_indenting_stream: AutoIndentingStream = .init(gpa, w, indent_delta);
defer auto_indenting_stream.deinit();
var r: Render = .{
.gpa = gpa,
.ais = &auto_indenting_stream,
.tree = tree,
.fixups = fixups,
};
// Render all the line comments at the beginning of the file.
const comment_end_loc = tree.tokenStart(0);
_ = try renderComments(&r, 0, comment_end_loc);
if (tree.tokenTag(0) == .container_doc_comment) {
try renderContainerDocComments(&r, 0);
}
switch (tree.mode) {
.zig => try renderMembers(&r, tree.rootDecls()),
.zon => {
try renderExpression(
&r,
tree.rootDecls()[0],
.newline,
);
},
}
if (auto_indenting_stream.disabled_offset) |disabled_offset| {
try writeFixingWhitespace(auto_indenting_stream.underlying_writer, tree.source[disabled_offset..]);
}
}