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 standard library.
std › zig › AstGen › assignShift Private Function assignShift Doc Source Private Function std.zig.AstGen.assignShift
fn assignShift (
gz : *GenZir ,
scope : *Scope ,
infix_node : Ast .Node .Index ,
op_inst_tag : Zir .Inst .Tag ,
) InnerError !void Params Errors File zig/AstGen.zig: 3697
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721 fn assignShift (
gz : *GenZir ,
scope : *Scope ,
infix_node : Ast .Node .Index ,
op_inst_tag : Zir .Inst .Tag ,
) InnerError !void {
try emitDbgNode (gz , infix_node );
const astgen = gz .astgen ;
const tree = astgen .tree ;
const lhs_node , const rhs_node = tree .nodeData (infix_node ).node_and_node ;
const lhs_ptr = try lvalExpr (gz , scope , lhs_node );
const lhs = try gz .addUnNode (.load , lhs_ptr , infix_node );
const rhs_type = try gz .addUnNode (.typeof_log2_int_type , lhs , infix_node );
const rhs = try expr (gz , scope , .{ .rl = .{ .ty = rhs_type } }, rhs_node );
const result = try gz .addPlNode (op_inst_tag , infix_node , Zir .Inst .Bin {
.lhs = lhs ,
.rhs = rhs ,
});
_ = try gz .addPlNode (.store_node , infix_node , Zir .Inst .Bin {
.lhs = lhs_ptr ,
.rhs = result ,
});
}