authorgravatar for tobias.simetsreiter@wabtec.comTobias Simetsreiter <tobias.simetsreiter@wabtec.com> 2023-10-18 01:04:01+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-10-17 19:04:01-04:00
log7a9500fd80990a3dc47821e627162bf769eecbba
treeb4c7d59c0815b5222b8f9270fc6897beaacde563
parentf58811a58a592a4e5844e66919b18211dc5f6e59
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Fix rendering ast in zon mode (#17547)

Co-authored-by: Tobias Simetsreiter <tobias.simetsreiter@wabtec.com>

3 files changed, 14 insertions(+), 1 deletions(-)

lib/std/zig/Ast.zig+2
...@@ -12,6 +12,7 @@ tokens: TokenList.Slice,...@@ -12,6 +12,7 @@ tokens: TokenList.Slice,
12/// references to the root node, this means 0 is available to indicate null.12/// references to the root node, this means 0 is available to indicate null.
13nodes: NodeList.Slice,13nodes: NodeList.Slice,
14extra_data: []Node.Index,14extra_data: []Node.Index,
15mode: Mode = .zig,
1516
16errors: []const Error,17errors: []const Error,
1718
...@@ -96,6 +97,7 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A...@@ -96,6 +97,7 @@ pub fn parse(gpa: Allocator, source: [:0]const u8, mode: Mode) Allocator.Error!A
96 // TODO experiment with compacting the MultiArrayList slices here97 // TODO experiment with compacting the MultiArrayList slices here
97 return Ast{98 return Ast{
98 .source = source,99 .source = source,
100 .mode = mode,
99 .tokens = tokens.toOwnedSlice(),101 .tokens = tokens.toOwnedSlice(),
100 .nodes = parser.nodes.toOwnedSlice(),102 .nodes = parser.nodes.toOwnedSlice(),
101 .extra_data = try parser.extra_data.toOwnedSlice(gpa),103 .extra_data = try parser.extra_data.toOwnedSlice(gpa),
lib/std/zig/render.zig+11-1
...@@ -30,7 +30,17 @@ pub fn renderTree(buffer: *std.ArrayList(u8), tree: Ast) Error!void {...@@ -30,7 +30,17 @@ pub fn renderTree(buffer: *std.ArrayList(u8), tree: Ast) Error!void {
30 try renderContainerDocComments(ais, tree, 0);30 try renderContainerDocComments(ais, tree, 0);
31 }31 }
3232
33 try renderMembers(buffer.allocator, ais, tree, tree.rootDecls());33 if (tree.mode == .zon) {
34 try renderExpression(
35 buffer.allocator,
36 ais,
37 tree,
38 tree.nodes.items(.data)[0].lhs,
39 .newline,
40 );
41 } else {
42 try renderMembers(buffer.allocator, ais, tree, tree.rootDecls());
43 }
3444
35 if (ais.disabled_offset) |disabled_offset| {45 if (ais.disabled_offset) |disabled_offset| {
36 try writeFixingWhitespace(ais.underlying_writer, tree.source[disabled_offset..]);46 try writeFixingWhitespace(ais.underlying_writer, tree.source[disabled_offset..]);
src/translate_c/ast.zig+1
...@@ -794,6 +794,7 @@ pub fn render(gpa: Allocator, nodes: []const Node) !std.zig.Ast {...@@ -794,6 +794,7 @@ pub fn render(gpa: Allocator, nodes: []const Node) !std.zig.Ast {
794 .nodes = ctx.nodes.toOwnedSlice(),794 .nodes = ctx.nodes.toOwnedSlice(),
795 .extra_data = try ctx.extra_data.toOwnedSlice(gpa),795 .extra_data = try ctx.extra_data.toOwnedSlice(gpa),
796 .errors = &.{},796 .errors = &.{},
797 .mode = .zig,
797 };798 };
798}799}
799800