authorgravatar for aaron@sikes.ioAaron Sikes <aaron@sikes.io> 2021-10-23 12:46:22-04:00
committergravatar for aaron@sikes.ioAaron Sikes <aaron@sikes.io> 2021-10-23 12:46:22-04:00
logf98f5e0bcd5b6e726227e3c0c72c2efae8dd21c6
treef0d4314496b73dc29604173206b3b0da5a7d8116
parent07bb8681e97f122ad7e883cb40f28639c01b020e

Fix enums with non-ident fields


1 files changed, 11 insertions(+), 0 deletions(-)

lib/std/build/OptionsStep.zig+11
......@@ -119,6 +119,8 @@ pub fn addOption(self: *OptionsStep, comptime T: type, name: []const u8, value:
119119 out.print(" {},\n", .{std.zig.fmtId(field.name)}) catch unreachable;
120120 }
121121 out.writeAll("};\n") catch unreachable;
122 out.print("pub const {}: {s} = {s}.{s};\n", .{ std.zig.fmtId(name), @typeName(T), @typeName(T), std.zig.fmtId(@tagName(value)) }) catch unreachable;
123 return;
122124 },
123125 else => {},
124126 }
......@@ -236,10 +238,15 @@ test "OptionsStep" {
236238
237239 const options = builder.addOptions();
238240
241 const KeywordEnum = enum {
242 @"0.8.1",
243 };
244
239245 options.addOption(usize, "option1", 1);
240246 options.addOption(?usize, "option2", null);
241247 options.addOption([]const u8, "string", "zigisthebest");
242248 options.addOption(?[]const u8, "optional_string", null);
249 options.addOption(KeywordEnum, "keyword_enum", .@"0.8.1");
243250 options.addOption(std.builtin.Version, "version", try std.builtin.Version.parse("0.1.2"));
244251 options.addOption(std.SemanticVersion, "semantic_version", try std.SemanticVersion.parse("0.1.2-foo+bar"));
245252
......@@ -248,6 +255,10 @@ test "OptionsStep" {
248255 \\pub const option2: ?usize = null;
249256 \\pub const string: []const u8 = "zigisthebest";
250257 \\pub const optional_string: ?[]const u8 = null;
258 \\pub const KeywordEnum = enum {
259 \\ @"0.8.1",
260 \\};
261 \\pub const keyword_enum: KeywordEnum = KeywordEnum.@"0.8.1";
251262 \\pub const version: @import("std").builtin.Version = .{
252263 \\ .major = 0,
253264 \\ .minor = 1,