Skip to content

Commit afb938d

Browse files
committed
std.zig.AstGen: simplify logic in blockExprStmts
1 parent eb6be43 commit afb938d

File tree

1 file changed

+53
-56
lines changed

1 file changed

+53
-56
lines changed

lib/std/zig/AstGen.zig

Lines changed: 53 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -2575,67 +2575,64 @@ fn blockExprStmts(gz: *GenZir, parent_scope: *Scope, statements: []const Ast.Nod
25752575
.normal => false,
25762576
.allow_branch_hint => stmt_idx == 0,
25772577
};
2578+
25782579
var inner_node = statement;
2579-
while (true) {
2580-
switch (tree.nodeTag(inner_node)) {
2581-
// zig fmt: off
2582-
.global_var_decl,
2583-
.local_var_decl,
2584-
.simple_var_decl,
2585-
.aligned_var_decl, => scope = try varDecl(gz, scope, statement, block_arena_allocator, tree.fullVarDecl(statement).?),
2586-
2587-
.assign_destructure => scope = try assignDestructureMaybeDecls(gz, scope, statement, block_arena_allocator),
2588-
2589-
.@"defer" => scope = try deferStmt(gz, scope, statement, block_arena_allocator, .defer_normal),
2590-
.@"errdefer" => scope = try deferStmt(gz, scope, statement, block_arena_allocator, .defer_error),
2591-
2592-
.assign => try assign(gz, scope, statement),
2593-
2594-
.assign_shl => try assignShift(gz, scope, statement, .shl),
2595-
.assign_shr => try assignShift(gz, scope, statement, .shr),
2596-
2597-
.assign_bit_and => try assignOp(gz, scope, statement, .bit_and),
2598-
.assign_bit_or => try assignOp(gz, scope, statement, .bit_or),
2599-
.assign_bit_xor => try assignOp(gz, scope, statement, .xor),
2600-
.assign_div => try assignOp(gz, scope, statement, .div),
2601-
.assign_sub => try assignOp(gz, scope, statement, .sub),
2602-
.assign_sub_wrap => try assignOp(gz, scope, statement, .subwrap),
2603-
.assign_mod => try assignOp(gz, scope, statement, .mod_rem),
2604-
.assign_add => try assignOp(gz, scope, statement, .add),
2605-
.assign_add_wrap => try assignOp(gz, scope, statement, .addwrap),
2606-
.assign_mul => try assignOp(gz, scope, statement, .mul),
2607-
.assign_mul_wrap => try assignOp(gz, scope, statement, .mulwrap),
2608-
2609-
.grouped_expression => {
2610-
inner_node = tree.nodeData(inner_node).node_and_token[0];
2611-
continue;
2612-
},
2580+
while (tree.nodeTag(inner_node) == .grouped_expression) {
2581+
inner_node = tree.nodeData(inner_node).node_and_token[0];
2582+
}
26132583

2614-
.while_simple,
2615-
.while_cont,
2616-
.@"while", => _ = try whileExpr(gz, scope, .{ .rl = .none }, inner_node, tree.fullWhile(inner_node).?, true),
2584+
switch (tree.nodeTag(inner_node)) {
2585+
// zig fmt: off
2586+
.global_var_decl,
2587+
.local_var_decl,
2588+
.simple_var_decl,
2589+
.aligned_var_decl, => scope = try varDecl(gz, scope, statement, block_arena_allocator, tree.fullVarDecl(statement).?),
26172590

2618-
.for_simple,
2619-
.@"for", => _ = try forExpr(gz, scope, .{ .rl = .none }, inner_node, tree.fullFor(inner_node).?, true),
2620-
// zig fmt: on
2591+
.assign_destructure => scope = try assignDestructureMaybeDecls(gz, scope, statement, block_arena_allocator),
26212592

2622-
// These cases are here to allow branch hints.
2623-
.builtin_call_two,
2624-
.builtin_call_two_comma,
2625-
.builtin_call,
2626-
.builtin_call_comma,
2627-
=> {
2628-
var buf: [2]Ast.Node.Index = undefined;
2629-
const params = tree.builtinCallParams(&buf, inner_node).?;
2630-
2631-
try emitDbgNode(gz, inner_node);
2632-
const result = try builtinCall(gz, scope, .{ .rl = .none }, inner_node, params, allow_branch_hint);
2633-
noreturn_src_node = try addEnsureResult(gz, result, inner_node);
2634-
},
2593+
.@"defer" => scope = try deferStmt(gz, scope, statement, block_arena_allocator, .defer_normal),
2594+
.@"errdefer" => scope = try deferStmt(gz, scope, statement, block_arena_allocator, .defer_error),
26352595

2636-
else => noreturn_src_node = try unusedResultExpr(gz, scope, inner_node),
2637-
}
2638-
break;
2596+
.assign => try assign(gz, scope, statement),
2597+
2598+
.assign_shl => try assignShift(gz, scope, statement, .shl),
2599+
.assign_shr => try assignShift(gz, scope, statement, .shr),
2600+
2601+
.assign_bit_and => try assignOp(gz, scope, statement, .bit_and),
2602+
.assign_bit_or => try assignOp(gz, scope, statement, .bit_or),
2603+
.assign_bit_xor => try assignOp(gz, scope, statement, .xor),
2604+
.assign_div => try assignOp(gz, scope, statement, .div),
2605+
.assign_sub => try assignOp(gz, scope, statement, .sub),
2606+
.assign_sub_wrap => try assignOp(gz, scope, statement, .subwrap),
2607+
.assign_mod => try assignOp(gz, scope, statement, .mod_rem),
2608+
.assign_add => try assignOp(gz, scope, statement, .add),
2609+
.assign_add_wrap => try assignOp(gz, scope, statement, .addwrap),
2610+
.assign_mul => try assignOp(gz, scope, statement, .mul),
2611+
.assign_mul_wrap => try assignOp(gz, scope, statement, .mulwrap),
2612+
2613+
.while_simple,
2614+
.while_cont,
2615+
.@"while", => _ = try whileExpr(gz, scope, .{ .rl = .none }, inner_node, tree.fullWhile(inner_node).?, true),
2616+
2617+
.for_simple,
2618+
.@"for", => _ = try forExpr(gz, scope, .{ .rl = .none }, inner_node, tree.fullFor(inner_node).?, true),
2619+
// zig fmt: on
2620+
2621+
// These cases are here to allow branch hints.
2622+
.builtin_call_two,
2623+
.builtin_call_two_comma,
2624+
.builtin_call,
2625+
.builtin_call_comma,
2626+
=> {
2627+
var buf: [2]Ast.Node.Index = undefined;
2628+
const params = tree.builtinCallParams(&buf, inner_node).?;
2629+
2630+
try emitDbgNode(gz, inner_node);
2631+
const result = try builtinCall(gz, scope, .{ .rl = .none }, inner_node, params, allow_branch_hint);
2632+
noreturn_src_node = try addEnsureResult(gz, result, inner_node);
2633+
},
2634+
2635+
else => noreturn_src_node = try unusedResultExpr(gz, scope, inner_node),
26392636
}
26402637
}
26412638

0 commit comments

Comments
 (0)