diff options
| -rw-r--r-- | build.zig.zon | 2 | ||||
| -rw-r--r-- | clap.zig | 44 |
2 files changed, 19 insertions, 27 deletions
diff --git a/build.zig.zon b/build.zig.zon index 98e569f..fa52e70 100644 --- a/build.zig.zon +++ b/build.zig.zon | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | .{ | 1 | .{ |
| 2 | .name = .clap, | 2 | .name = .clap, |
| 3 | .version = "0.11.0", | 3 | .version = "0.11.0", |
| 4 | .minimum_zig_version = "0.15.1", | 4 | .minimum_zig_version = "0.16.0-dev.1484+d0ba6642b", |
| 5 | .fingerprint = 0x65f99e6f07a316a0, | 5 | .fingerprint = 0x65f99e6f07a316a0, |
| 6 | .paths = .{ | 6 | .paths = .{ |
| 7 | "clap", | 7 | "clap", |
| @@ -891,7 +891,7 @@ fn Positionals( | |||
| 891 | fields_len += 1; | 891 | fields_len += 1; |
| 892 | } | 892 | } |
| 893 | 893 | ||
| 894 | var fields: [fields_len]std.builtin.Type.StructField = undefined; | 894 | var field_types: [fields_len]type = undefined; |
| 895 | var i: usize = 0; | 895 | var i: usize = 0; |
| 896 | for (params) |param| { | 896 | for (params) |param| { |
| 897 | const longest = param.names.longest(); | 897 | const longest = param.names.longest(); |
| @@ -908,22 +908,11 @@ fn Positionals( | |||
| 908 | }, | 908 | }, |
| 909 | }; | 909 | }; |
| 910 | 910 | ||
| 911 | fields[i] = .{ | 911 | field_types[i] = FieldT; |
| 912 | .name = std.fmt.comptimePrint("{}", .{i}), | ||
| 913 | .type = FieldT, | ||
| 914 | .default_value_ptr = null, | ||
| 915 | .is_comptime = false, | ||
| 916 | .alignment = @alignOf(FieldT), | ||
| 917 | }; | ||
| 918 | i += 1; | 912 | i += 1; |
| 919 | } | 913 | } |
| 920 | 914 | ||
| 921 | return @Type(.{ .@"struct" = .{ | 915 | return @Tuple(&field_types); |
| 922 | .layout = .auto, | ||
| 923 | .fields = &fields, | ||
| 924 | .decls = &.{}, | ||
| 925 | .is_tuple = true, | ||
| 926 | } }); | ||
| 927 | } | 916 | } |
| 928 | 917 | ||
| 929 | fn initPositionals( | 918 | fn initPositionals( |
| @@ -1008,7 +997,9 @@ fn Arguments( | |||
| 1008 | fields_len += 1; | 997 | fields_len += 1; |
| 1009 | } | 998 | } |
| 1010 | 999 | ||
| 1011 | var fields: [fields_len]std.builtin.Type.StructField = undefined; | 1000 | var field_names: [fields_len][]const u8 = undefined; |
| 1001 | var field_types: [fields_len]type = undefined; | ||
| 1002 | var field_attrs: [fields_len]std.builtin.Type.StructField.Attributes = undefined; | ||
| 1012 | var i: usize = 0; | 1003 | var i: usize = 0; |
| 1013 | for (params) |param| { | 1004 | for (params) |param| { |
| 1014 | const longest = param.names.longest(); | 1005 | const longest = param.names.longest(); |
| @@ -1026,22 +1017,23 @@ fn Arguments( | |||
| 1026 | }; | 1017 | }; |
| 1027 | 1018 | ||
| 1028 | const name = longest.name[0..longest.name.len] ++ ""; // Adds null terminator | 1019 | const name = longest.name[0..longest.name.len] ++ ""; // Adds null terminator |
| 1029 | fields[i] = .{ | 1020 | field_names[i] = name; |
| 1030 | .name = name, | 1021 | field_types[i] = @TypeOf(default_value); |
| 1031 | .type = @TypeOf(default_value), | 1022 | field_attrs[i] = .{ |
| 1023 | .@"comptime" = false, | ||
| 1024 | .@"align" = @alignOf(@TypeOf(default_value)), | ||
| 1032 | .default_value_ptr = @ptrCast(&default_value), | 1025 | .default_value_ptr = @ptrCast(&default_value), |
| 1033 | .is_comptime = false, | ||
| 1034 | .alignment = @alignOf(@TypeOf(default_value)), | ||
| 1035 | }; | 1026 | }; |
| 1036 | i += 1; | 1027 | i += 1; |
| 1037 | } | 1028 | } |
| 1038 | 1029 | ||
| 1039 | return @Type(.{ .@"struct" = .{ | 1030 | return @Struct( |
| 1040 | .layout = .auto, | 1031 | .auto, |
| 1041 | .fields = &fields, | 1032 | null, |
| 1042 | .decls = &.{}, | 1033 | &field_names, |
| 1043 | .is_tuple = false, | 1034 | &field_types, |
| 1044 | } }); | 1035 | if (fields_len == 0) &@splat(.{}) else &field_attrs, |
| 1036 | ); | ||
| 1045 | } | 1037 | } |
| 1046 | 1038 | ||
| 1047 | test "str and u64" { | 1039 | test "str and u64" { |