pub fn renderTree(gpa: Allocator, w: *Writer, tree: Ast, fixups: Fixups) Error!void OutOfMemoryRan out of memory allocating call stack frames to complete rendering.
WriteFailedTransitive failure from
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119pub 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..]);
}
}