summaryrefslogtreecommitdiff
path: root/dev-lang/zig/files/zig-0.15.1-reduce-command-new-writer.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang/zig/files/zig-0.15.1-reduce-command-new-writer.patch')
-rw-r--r--dev-lang/zig/files/zig-0.15.1-reduce-command-new-writer.patch175
1 files changed, 175 insertions, 0 deletions
diff --git a/dev-lang/zig/files/zig-0.15.1-reduce-command-new-writer.patch b/dev-lang/zig/files/zig-0.15.1-reduce-command-new-writer.patch
new file mode 100644
index 000000000000..07bb44b3cfa7
--- /dev/null
+++ b/dev-lang/zig/files/zig-0.15.1-reduce-command-new-writer.patch
@@ -0,0 +1,175 @@
+# https://github.com/ziglang/zig/pull/24928
+
+From: Justus Klausecker <justus@klausecker.de>
+
+zig reduce: adapt to new Writer API
+
+diff --git a/lib/compiler/reduce.zig b/lib/compiler/reduce.zig
+index d9955b9e3383..b20a2fcba318 100644
+--- a/lib/compiler/reduce.zig
++++ b/lib/compiler/reduce.zig
+@@ -114,10 +114,10 @@ pub fn main() !void {
+ interestingness_argv.appendAssumeCapacity(checker_path);
+ interestingness_argv.appendSliceAssumeCapacity(argv);
+
+- var rendered = std.array_list.Managed(u8).init(gpa);
++ var rendered: std.Io.Writer.Allocating = .init(gpa);
+ defer rendered.deinit();
+
+- var astgen_input = std.array_list.Managed(u8).init(gpa);
++ var astgen_input: std.Io.Writer.Allocating = .init(gpa);
+ defer astgen_input.deinit();
+
+ var tree = try parse(gpa, root_source_file_path);
+@@ -138,10 +138,10 @@ pub fn main() !void {
+ }
+ }
+
+- var fixups: Ast.Fixups = .{};
++ var fixups: Ast.Render.Fixups = .{};
+ defer fixups.deinit(gpa);
+
+- var more_fixups: Ast.Fixups = .{};
++ var more_fixups: Ast.Render.Fixups = .{};
+ defer more_fixups.deinit(gpa);
+
+ var rng = std.Random.DefaultPrng.init(seed);
+@@ -188,15 +188,14 @@ pub fn main() !void {
+ try transformationsToFixups(gpa, arena, root_source_file_path, this_set, &fixups);
+
+ rendered.clearRetainingCapacity();
+- try tree.renderToArrayList(&rendered, fixups);
++ try tree.render(gpa, &rendered.writer, fixups);
+
+ // The transformations we applied may have resulted in unused locals,
+ // in which case we would like to add the respective discards.
+ {
+- try astgen_input.resize(rendered.items.len);
+- @memcpy(astgen_input.items, rendered.items);
+- try astgen_input.append(0);
+- const source_with_null = astgen_input.items[0 .. astgen_input.items.len - 1 :0];
++ try astgen_input.writer.writeAll(rendered.written());
++ try astgen_input.writer.writeByte(0);
++ const source_with_null = astgen_input.written()[0..(astgen_input.written().len - 1) :0];
+ var astgen_tree = try Ast.parse(gpa, source_with_null, .zig);
+ defer astgen_tree.deinit(gpa);
+ if (astgen_tree.errors.len != 0) {
+@@ -228,12 +227,12 @@ pub fn main() !void {
+ }
+ if (more_fixups.count() != 0) {
+ rendered.clearRetainingCapacity();
+- try astgen_tree.renderToArrayList(&rendered, more_fixups);
++ try astgen_tree.render(gpa, &rendered.writer, more_fixups);
+ }
+ }
+ }
+
+- try std.fs.cwd().writeFile(.{ .sub_path = root_source_file_path, .data = rendered.items });
++ try std.fs.cwd().writeFile(.{ .sub_path = root_source_file_path, .data = rendered.written() });
+ // std.debug.print("trying this code:\n{s}\n", .{rendered.items});
+
+ const interestingness = try runCheck(arena, interestingness_argv.items);
+@@ -273,8 +272,8 @@ pub fn main() !void {
+ // Revert the source back to not be transformed.
+ fixups.clearRetainingCapacity();
+ rendered.clearRetainingCapacity();
+- try tree.renderToArrayList(&rendered, fixups);
+- try std.fs.cwd().writeFile(.{ .sub_path = root_source_file_path, .data = rendered.items });
++ try tree.render(gpa, &rendered.writer, fixups);
++ try std.fs.cwd().writeFile(.{ .sub_path = root_source_file_path, .data = rendered.written() });
+
+ return std.process.cleanExit();
+ }
+@@ -318,7 +317,7 @@ fn transformationsToFixups(
+ arena: Allocator,
+ root_source_file_path: []const u8,
+ transforms: []const Walk.Transformation,
+- fixups: *Ast.Fixups,
++ fixups: *Ast.Render.Fixups,
+ ) !void {
+ fixups.clearRetainingCapacity();
+
+@@ -359,7 +358,7 @@ fn transformationsToFixups(
+ other_file_ast.deinit(gpa);
+ }
+
+- var inlined_fixups: Ast.Fixups = .{};
++ var inlined_fixups: Ast.Render.Fixups = .{};
+ defer inlined_fixups.deinit(gpa);
+ if (std.fs.path.dirname(inline_imported_file.imported_string)) |dirname| {
+ inlined_fixups.rebase_imported_paths = dirname;
+@@ -382,16 +381,16 @@ fn transformationsToFixups(
+ }
+ }
+
+- var other_source = std.array_list.Managed(u8).init(gpa);
++ var other_source: std.io.Writer.Allocating = .init(gpa);
+ defer other_source.deinit();
+- try other_source.appendSlice("struct {\n");
+- try other_file_ast.renderToArrayList(&other_source, inlined_fixups);
+- try other_source.appendSlice("}");
++ try other_source.writer.writeAll("struct {\n");
++ try other_file_ast.render(gpa, &other_source.writer, inlined_fixups);
++ try other_source.writer.writeAll("}");
+
+ try fixups.replace_nodes_with_string.put(
+ gpa,
+ inline_imported_file.builtin_call_node,
+- try arena.dupe(u8, other_source.items),
++ try arena.dupe(u8, other_source.written()),
+ );
+ },
+ };
+diff --git a/lib/compiler/reduce/Walk.zig b/lib/compiler/reduce/Walk.zig
+index 4e41fdf1a2a9..7a448fad2172 100644
+--- a/lib/compiler/reduce/Walk.zig
++++ b/lib/compiler/reduce/Walk.zig
+@@ -501,6 +501,10 @@ fn walkExpression(w: *Walk, node: Ast.Node.Index) Error!void {
+ .@"asm",
+ => return walkAsm(w, ast.fullAsm(node).?),
+
++ .asm_legacy => {
++ return walkAsmLegacy(w, ast.legacyAsm(node).?);
++ },
++
+ .enum_literal => {
+ return walkIdentifier(w, ast.nodeMainToken(node)); // name
+ },
+@@ -665,7 +669,7 @@ fn walkStructInit(
+
+ fn walkCall(w: *Walk, call: Ast.full.Call) Error!void {
+ try walkExpression(w, call.ast.fn_expr);
+- try walkParamList(w, call.ast.params);
++ try walkExpressions(w, call.ast.params);
+ }
+
+ fn walkSlice(
+@@ -830,7 +834,7 @@ fn walkWhile(w: *Walk, node_index: Ast.Node.Index, while_node: Ast.full.While) E
+ }
+
+ fn walkFor(w: *Walk, for_node: Ast.full.For) Error!void {
+- try walkParamList(w, for_node.ast.inputs);
++ try walkExpressions(w, for_node.ast.inputs);
+ try walkExpression(w, for_node.ast.then_expr);
+ if (for_node.ast.else_expr.unwrap()) |else_expr| {
+ try walkExpression(w, else_expr);
+@@ -874,15 +878,12 @@ fn walkIf(w: *Walk, node_index: Ast.Node.Index, if_node: Ast.full.If) Error!void
+
+ fn walkAsm(w: *Walk, asm_node: Ast.full.Asm) Error!void {
+ try walkExpression(w, asm_node.ast.template);
+- for (asm_node.ast.items) |item| {
+- try walkExpression(w, item);
+- }
++ try walkExpressions(w, asm_node.ast.items);
+ }
+
+-fn walkParamList(w: *Walk, params: []const Ast.Node.Index) Error!void {
+- for (params) |param_node| {
+- try walkExpression(w, param_node);
+- }
++fn walkAsmLegacy(w: *Walk, asm_node: Ast.full.AsmLegacy) Error!void {
++ try walkExpression(w, asm_node.ast.template);
++ try walkExpressions(w, asm_node.ast.items);
+ }
+
+ /// Check if it is already gutted (i.e. its body replaced with `@trap()`).