Commit abd9089aa6

Andrew Kelley <andrew@ziglang.org>
2022-11-30 21:22:04
std.build: simpler fix to options implementation
Instead of messing with ArrayList and more logic, just unwrap the error of toOwnedSlice().
1 parent 747f64b
Changed files (1)
lib
lib/std/build.zig
@@ -523,7 +523,7 @@ pub const Builder = struct {
         const name = self.dupe(name_raw);
         const description = self.dupe(description_raw);
         const type_id = comptime typeToEnum(T);
-        const enum_options: ?ArrayList([]const u8) = if (type_id == .@"enum") blk: {
+        const enum_options = if (type_id == .@"enum") blk: {
             const fields = comptime std.meta.fields(T);
             var options = ArrayList([]const u8).initCapacity(self.allocator, fields.len) catch unreachable;
 
@@ -531,13 +531,13 @@ pub const Builder = struct {
                 options.appendAssumeCapacity(field.name);
             }
 
-            break :blk options;
+            break :blk options.toOwnedSlice() catch unreachable;
         } else null;
         const available_option = AvailableOption{
             .name = name,
             .type_id = type_id,
             .description = description,
-            .enum_options = if (enum_options) |options| options.items else null,
+            .enum_options = enum_options,
         };
         if ((self.available_options_map.fetchPut(name, available_option) catch unreachable) != null) {
             panic("Option '{s}' declared twice", .{name});