Commit 7a9500fd80

Tobias Simetsreiter <dasimmet@gmail.com>
2023-10-18 01:04:01
Fix rendering ast in zon mode (#17547)
Co-authored-by: Tobias Simetsreiter <tobias.simetsreiter@wabtec.com>
1 parent f58811a
Changed files (3)
lib
src
translate_c
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),
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..]);
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,
     };
 }