From 1b432072b5ae6a70a00464b48b7ebf8610293fc3 Mon Sep 17 00:00:00 2001 From: dweiller <4678790+dweiller@users.noreplay.github.com> Date: Fri, 10 Mar 2023 13:03:40 +1100 Subject: [PATCH] std.Build: detect and disallow top-level step name clashes --- lib/std/Build.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/std/Build.zig b/lib/std/Build.zig index f23b3ba5aa..a2c8a22e32 100644 --- a/lib/std/Build.zig +++ b/lib/std/Build.zig @@ -926,7 +926,12 @@ pub fn step(self: *Build, name: []const u8, description: []const u8) *Step { }), .description = self.dupe(description), }; - self.top_level_steps.put(self.allocator, step_info.step.name, step_info) catch @panic("OOM"); + const gop = self.top_level_steps.getOrPut(self.allocator, name) catch @panic("OOM"); + if (gop.found_existing) std.debug.panic("A top-level step with name \"{s}\" already exists", .{name}); + + gop.key_ptr.* = step_info.step.name; + gop.value_ptr.* = step_info; + return &step_info.step; }