Commit 88acdb9aa6

Andrew Kelley <andrew@ziglang.org>
2023-11-05 02:06:11
zig reduce: delete statements from blocks
1 parent 212aa71
Changed files (2)
lib
std
src
reduce
lib/std/zig/render.zig
@@ -2043,7 +2043,12 @@ fn finishRenderBlock(
             .simple_var_decl,
             .aligned_var_decl,
             => try renderVarDecl(r, tree.fullVarDecl(stmt).?, false, .semicolon),
-            else => try renderExpression(r, stmt, .semicolon),
+
+            else => {
+                if (!r.fixups.omit_nodes.contains(stmt)) {
+                    try renderExpression(r, stmt, .semicolon);
+                }
+            },
         }
     }
     ais.popIndent();
src/reduce/Walk.zig
@@ -134,8 +134,8 @@ fn walkMember(w: *Walk, decl: Ast.Node.Index) Error!void {
             const body_node = datas[decl].rhs;
             if (!isFnBodyGutted(ast, body_node)) {
                 try w.transformations.append(.{ .gut_function = decl });
+                try walkExpression(w, body_node);
             }
-            try walkExpression(w, body_node);
         },
         .fn_proto_simple,
         .fn_proto_multi,
@@ -648,7 +648,10 @@ fn walkBlock(
             .aligned_var_decl,
             => try walkLocalVarDecl(w, ast.fullVarDecl(stmt).?),
 
-            else => try walkExpression(w, stmt),
+            else => {
+                try w.transformations.append(.{ .delete_node = stmt });
+                try walkExpression(w, stmt);
+            },
         }
     }
 }