diff options
| -rw-r--r-- | clap.zig | 11 |
1 files changed, 9 insertions, 2 deletions
| @@ -895,8 +895,15 @@ fn Arguments( | |||
| 895 | comptime value_parsers: anytype, | 895 | comptime value_parsers: anytype, |
| 896 | comptime multi_arg_kind: MultiArgKind, | 896 | comptime multi_arg_kind: MultiArgKind, |
| 897 | ) type { | 897 | ) type { |
| 898 | var fields: [params.len]builtin.Type.StructField = undefined; | 898 | var fields_len: usize = 0; |
| 899 | for (params) |param| { | ||
| 900 | const longest = param.names.longest(); | ||
| 901 | if (longest.kind == .positional) | ||
| 902 | continue; | ||
| 903 | fields_len += 1; | ||
| 904 | } | ||
| 899 | 905 | ||
| 906 | var fields: [fields_len]builtin.Type.StructField = undefined; | ||
| 900 | var i: usize = 0; | 907 | var i: usize = 0; |
| 901 | for (params) |param| { | 908 | for (params) |param| { |
| 902 | const longest = param.names.longest(); | 909 | const longest = param.names.longest(); |
| @@ -926,7 +933,7 @@ fn Arguments( | |||
| 926 | 933 | ||
| 927 | return @Type(.{ .Struct = .{ | 934 | return @Type(.{ .Struct = .{ |
| 928 | .layout = .auto, | 935 | .layout = .auto, |
| 929 | .fields = fields[0..i], | 936 | .fields = &fields, |
| 930 | .decls = &.{}, | 937 | .decls = &.{}, |
| 931 | .is_tuple = false, | 938 | .is_tuple = false, |
| 932 | } }); | 939 | } }); |