feature. See also
. The project being documented here (as the example) is the Zig library itself.
AstRlAnnotate.blockExpr
fn blockExpr(astrl: *AstRlAnnotate, parent_block: ?*Block, ri: ResultInfo, node: Ast.Node.Index, statements: []const Ast.Node.Index) !bool
File
Code
fn blockExpr(astrl: *AstRlAnnotate, parent_block: ?*Block, ri: ResultInfo, node: Ast.Node.Index, statements: []const Ast.Node.Index) !bool {
const tree = astrl.tree;
const lbrace = tree.nodeMainToken(node);
if (tree.isTokenPrecededByTags(lbrace, &.{ .identifier, .colon })) {
var new_block: Block = .{
.parent = parent_block,
.label = try astrl.identString(lbrace - 2),
.is_loop = false,
.ri = ri,
.consumes_res_ptr = false,
};
for (statements) |statement| {
_ = try astrl.expr(statement, &new_block, ResultInfo.none);
}
if (new_block.consumes_res_ptr) {
try astrl.nodes_need_rl.putNoClobber(astrl.gpa, node, {});
}
return new_block.consumes_res_ptr;
} else {
for (statements) |statement| {
_ = try astrl.expr(statement, parent_block, ResultInfo.none);
}
return false;
}
}