Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › zig/ › Parse.zig › finishAssignDestructureExpr
finishAssignDestructureExpr
Parse.finishAssignDestructureExpr
fn finishAssignDestructureExpr (p : *Parse , first_lhs : Node .Index ) !Node .Index
File
Code
fn finishAssignDestructureExpr (p : *Parse , first_lhs : Node .Index ) !Node .Index {
const scratch_top = p .scratch .items .len ;
defer p .scratch .shrinkRetainingCapacity (scratch_top );
try p .scratch .append (p .gpa , first_lhs );
while (p .eatToken (.comma )) |_ | {
const expr = try p .expectExpr ();
try p .scratch .append (p .gpa , expr );
}
const equal_token = try p .expectToken (.equal );
const rhs = try p .expectExpr ();
const lhs_count = p .scratch .items .len - scratch_top ;
assert (lhs_count > 1 );
const extra_start : ExtraIndex = @fromBackingInt (@intCast (p .extra_data .items .len ));
try p .extra_data .ensureUnusedCapacity (p .gpa , lhs_count + 1 );
p .extra_data .appendAssumeCapacity (@intCast (lhs_count ));
p .extra_data .appendSliceAssumeCapacity (@ptrCast (p .scratch .items [scratch_top ..]));
return p .addNode (.{
.tag = .assign_destructure ,
.main_token = equal_token ,
.data = .{ .extra_and_node = .{
extra_start ,
rhs ,
} },
});
}