Fix rendering ast in zon mode (#17547)

Co-authored-by: Tobias Simetsreiter <tobias.simetsreiter@wabtec.com>
This commit is contained in:
Tobias Simetsreiter 2023-10-18 01:04:01 +02:00 committed by GitHub
parent f58811a58a
commit 7a9500fd80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 1 deletions

View File

@ -12,6 +12,7 @@ tokens: TokenList.Slice,
/// references to the root node, this means 0 is available to indicate null.
nodes: NodeList.Slice,
extra_data: []Node.Index,
mode: Mode = .zig,
errors: []const Error,
@ -96,6 +97,7 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A
// TODO experiment with compacting the MultiArrayList slices here
return Ast{
.source = source,
.mode = mode,
.tokens = tokens.toOwnedSlice(),
.nodes = parser.nodes.toOwnedSlice(),
.extra_data = try parser.extra_data.toOwnedSlice(gpa),

View File

@ -30,7 +30,17 @@ pub fn renderTree(buffer: *std.ArrayList(u8), tree: Ast) Error!void {
try renderContainerDocComments(ais, tree, 0);
}
try renderMembers(buffer.allocator, ais, tree, tree.rootDecls());
if (tree.mode == .zon) {
try renderExpression(
buffer.allocator,
ais,
tree,
tree.nodes.items(.data)[0].lhs,
.newline,
);
} else {
try renderMembers(buffer.allocator, ais, tree, tree.rootDecls());
}
if (ais.disabled_offset) |disabled_offset| {
try writeFixingWhitespace(ais.underlying_writer, tree.source[disabled_offset..]);

View File

@ -794,6 +794,7 @@ pub fn render(gpa: Allocator, nodes: []const Node) !std.zig.Ast {
.nodes = ctx.nodes.toOwnedSlice(),
.extra_data = try ctx.extra_data.toOwnedSlice(gpa),
.errors = &.{},
.mode = .zig,
};
}