motiejus/zig

fork of https://codeberg.org/ziglang/zig
git clone https://git.jakstys.lt/motiejus/zig.git
Log | Tree | Refs | README | LICENSE

commit 7a9500fd80990a3dc47821e627162bf769eecbba (tree)
parent f58811a58a592a4e5844e66919b18211dc5f6e59
Author: Tobias Simetsreiter <dasimmet@gmail.com>
Date:   Wed, 18 Oct 2023 01:04:01 +0200

Fix rendering ast in zon mode (#17547)


Co-authored-by: Tobias Simetsreiter <tobias.simetsreiter@wabtec.com>
Diffstat:
Mlib/std/zig/Ast.zig | 2++
Mlib/std/zig/render.zig | 12+++++++++++-
Msrc/translate_c/ast.zig | 1+
3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/lib/std/zig/Ast.zig b/lib/std/zig/Ast.zig @@ -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), diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig @@ -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..]); diff --git a/src/translate_c/ast.zig b/src/translate_c/ast.zig @@ -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, }; }