feature. See also
. The project being documented here (as the example) is the Zig library itself.
ast.renderArrayInit
fn renderArrayInit(c: *Context, lhs: NodeIndex, inits: []const Node) !NodeIndex
File
Code
fn renderArrayInit(c: *Context, lhs: NodeIndex, inits: []const Node) !NodeIndex {
const l_brace = try c.addToken(.l_brace, "{");
var rendered = try c.gpa.alloc(NodeIndex, inits.len);
defer c.gpa.free(rendered);
for (inits, 0..) |init, i| {
rendered[i] = try renderNode(c, init);
_ = try c.addToken(.comma, ",");
}
_ = try c.addToken(.r_brace, "}");
switch (inits.len) {
0 => return c.addNode(.{
.tag = .struct_init_one,
.main_token = l_brace,
.data = .{ .node_and_opt_node = .{
lhs, .none,
} },
}),
1 => return c.addNode(.{
.tag = .array_init_one_comma,
.main_token = l_brace,
.data = .{ .node_and_node = .{
lhs, rendered[0],
} },
}),
else => return c.addNode(.{
.tag = .array_init_comma,
.main_token = l_brace,
.data = .{ .node_and_extra = .{
lhs,
try c.addExtra(try c.listToSpan(rendered)),
} },
}),
}
}