Commit 7a9500fd80
Changed files (3)
lib
std
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,
};
}