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 › expectContainerField
expectContainerField
Parse.expectContainerField
fn expectContainerField (p : *Parse ) !Node .Index
File
Code
fn expectContainerField (p : *Parse ) !Node .Index {
_ = p .eatToken (.keyword_comptime );
const main_token = p .tok_i ;
_ = p .eatTokens (&.{ .identifier , .colon });
const type_expr = try p .expectTypeExpr ();
const align_expr = try p .parseByteAlign ();
const value_expr = if (p .eatToken (.equal ) == null ) null else try p .expectExpr ();
if (align_expr == null ) {
return p .addNode (.{
.tag = .container_field_init ,
.main_token = main_token ,
.data = .{ .node_and_opt_node = .{
type_expr ,
.fromOptional (value_expr ),
} },
});
} else if (value_expr == null ) {
return p .addNode (.{
.tag = .container_field_align ,
.main_token = main_token ,
.data = .{ .node_and_node = .{
type_expr ,
align_expr .?,
} },
});
} else {
return p .addNode (.{
.tag = .container_field ,
.main_token = main_token ,
.data = .{ .node_and_extra = .{
type_expr ,
try p .addExtra (Node .ContainerField {
.align_expr = align_expr .?,
.value_expr = value_expr .?,
}),
} },
});
}
}