authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-06-23 22:08:34-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-06-29 23:50:19-07:00
logad4887d1b8f4d439f154df15e219c98676b5334d
treea37ce5f753e49cbe29535f3e73b9fed45f11057c
parent98854a673e10bf0606bb720aed93a2b759e8842d

Maker: fix arg parsing

init subcommand works now

1 files changed, 9 insertions(+), 10 deletions(-)

lib/compiler/Maker.zig+9-10
...@@ -132,7 +132,6 @@ pub fn main(init: process.Init.Minimal) !void {...@@ -132,7 +132,6 @@ pub fn main(init: process.Init.Minimal) !void {
132 defer threaded.deinit();132 defer threaded.deinit();
133 const io = threaded.io();133 const io = threaded.io();
134134
135 // ...but we'll back our arena by `std.heap.page_allocator` for efficiency.
136 var arena_instance: std.heap.ArenaAllocator = .init(std.heap.page_allocator);135 var arena_instance: std.heap.ArenaAllocator = .init(std.heap.page_allocator);
137 defer arena_instance.deinit();136 defer arena_instance.deinit();
138 defer if (debugMakerLeaks()) log.debug("used {Bi} of arena", .{arena_instance.queryCapacity()});137 defer if (debugMakerLeaks()) log.debug("used {Bi} of arena", .{arena_instance.queryCapacity()});
...@@ -2742,20 +2741,20 @@ pub fn printErrorMessages(...@@ -2742,20 +2741,20 @@ pub fn printErrorMessages(
2742 try writer.writeByte('\n');2741 try writer.writeByte('\n');
2743}2742}
27442743
2745fn nextArg(args: []const []const u8, idx: *usize) ?[]const u8 {2744fn nextArg(args: []const []const u8, i: *usize) ?[]const u8 {
2746 if (idx.* >= args.len) return null;2745 if (i.* >= args.len) return null;
2747 defer idx.* += 1;2746 defer i.* += 1;
2748 return args[idx.*];2747 return args[i.*];
2749}2748}
27502749
2751fn nextArgOrFatal(args: []const []const u8, idx: *usize) []const u8 {2750fn nextArgOrFatal(args: []const []const u8, i: *usize) []const u8 {
2752 return nextArg(args, idx) orelse fatalWithHint("expected argument after {q}", .{args[idx.* - 1]});2751 return nextArg(args, i) orelse fatalWithHint("expected another argument after {q}", .{args[i.* - 1]});
2753}2752}
27542753
2755fn prefixedArgOrFatal(args: []const []const u8, index_ptr: *usize, prefix: []const u8) []const u8 {2754fn prefixedArgOrFatal(args: []const []const u8, i: *usize, prefix: []const u8) []const u8 {
2756 const arg = args[index_ptr.*];2755 const arg = nextArgOrFatal(args, i);
2757 if (mem.cutPrefix(u8, arg, prefix)) |rest| return rest;2756 if (mem.cutPrefix(u8, arg, prefix)) |rest| return rest;
2758 fatal("expected {q} to begin with {q}", .{ arg, prefix });2757 fatal("expected {q} to instead begin with {q}", .{ arg, prefix });
2759}2758}
27602759
2761fn argsRest(args: []const []const u8, idx: usize) ?[]const []const u8 {2760fn argsRest(args: []const []const u8, idx: usize) ?[]const []const u8 {