Remove unecessary comptime keyword in generate

Signed-off-by: Francis Bouvier <francis.bouvier@gmail.com>
This commit is contained in:
Francis Bouvier
2023-05-23 16:59:50 +02:00
parent 76c8d8594c
commit 4677968c85

View File

@@ -13,9 +13,7 @@ pub const Union = struct {
_union: type, _union: type,
pub fn compile(comptime tuple: anytype) Union { pub fn compile(comptime tuple: anytype) Union {
comptime { return private_compile(tuple) catch |err| @compileError(@errorName(err));
return private_compile(tuple) catch @compileError("CompileUnion error");
}
} }
fn private_compile(comptime tuple: anytype) !Union { fn private_compile(comptime tuple: anytype) !Union {
@@ -31,8 +29,8 @@ pub const Union = struct {
const tuple_members = tuple_info.Struct.fields; const tuple_members = tuple_info.Struct.fields;
// first iteration to get the total number of members // first iteration to get the total number of members
comptime var members_nb = 0; var members_nb = 0;
inline for (tuple_members) |member| { for (tuple_members) |member| {
const member_T = @field(tuple, member.name); const member_T = @field(tuple, member.name);
const member_info = @typeInfo(member_T); const member_info = @typeInfo(member_T);
if (member_info == .Union) { if (member_info == .Union) {
@@ -46,7 +44,7 @@ pub const Union = struct {
} }
// define the tag type regarding the members nb // define the tag type regarding the members nb
comptime var tag_type: type = undefined; var tag_type: type = undefined;
if (members_nb < 3) { if (members_nb < 3) {
tag_type = u1; tag_type = u1;
} else if (members_nb < 4) { } else if (members_nb < 4) {
@@ -70,14 +68,14 @@ pub const Union = struct {
} }
// second iteration to generate tags // second iteration to generate tags
comptime var enum_fields: [members_nb]std.builtin.Type.EnumField = undefined; var enum_fields: [members_nb]std.builtin.Type.EnumField = undefined;
comptime var done = 0; var done = 0;
inline for (tuple_members) |member| { for (tuple_members) |member| {
const member_T = @field(tuple, member.name); const member_T = @field(tuple, member.name);
const member_info = @typeInfo(member_T); const member_info = @typeInfo(member_T);
if (member_info == .Union) { if (member_info == .Union) {
const member_union = member_info.Union; const member_union = member_info.Union;
inline for (member_union.fields) |field| { for (member_union.fields) |field| {
enum_fields[done] = .{ enum_fields[done] = .{
.name = fmtName(field.field_type), .name = fmtName(field.field_type),
.value = done, .value = done,
@@ -103,14 +101,14 @@ pub const Union = struct {
const enum_T = @Type(std.builtin.Type{ .Enum = enum_info }); const enum_T = @Type(std.builtin.Type{ .Enum = enum_info });
// third iteration to generate union type // third iteration to generate union type
comptime var union_fields: [members_nb]std.builtin.Type.UnionField = undefined; var union_fields: [members_nb]std.builtin.Type.UnionField = undefined;
done = 0; done = 0;
inline for (tuple_members) |member, i| { for (tuple_members) |member, i| {
const member_T = @field(tuple, member.name); const member_T = @field(tuple, member.name);
const member_info = @typeInfo(member_T); const member_info = @typeInfo(member_T);
if (member_info == .Union) { if (member_info == .Union) {
const member_union = member_info.Union; const member_union = member_info.Union;
inline for (member_union.fields) |field| { for (member_union.fields) |field| {
union_fields[done] = .{ union_fields[done] = .{
.name = fmtName(field.field_type), .name = fmtName(field.field_type),
.field_type = field.field_type, .field_type = field.field_type,
@@ -144,18 +142,16 @@ pub const Union = struct {
}; };
fn itoa(comptime i: u8) ![]u8 { fn itoa(comptime i: u8) ![]u8 {
comptime { var len: usize = undefined;
var len: usize = undefined; if (i < 10) {
if (i < 10) { len = 1;
len = 1; } else if (i < 100) {
} else if (i < 100) { len = 2;
len = 2; } else {
} else { return error.GenerateTooMuchMembers;
return error.GenerateTooMuchMembers;
}
var buf: [len]u8 = undefined;
return try std.fmt.bufPrint(buf[0..], "{d}", .{i});
} }
var buf: [len]u8 = undefined;
return try std.fmt.bufPrint(buf[0..], "{d}", .{i});
} }
// Generate a flatten tuple type from various structs and tuple of structs. // Generate a flatten tuple type from various structs and tuple of structs.
@@ -172,7 +168,7 @@ pub fn TupleT(comptime tuple: anytype) type {
const tuple_members = tuple_info.Struct.fields; const tuple_members = tuple_info.Struct.fields;
// first iteration to get the total number of members // first iteration to get the total number of members
comptime var members_nb = 0; var members_nb = 0;
for (tuple_members) |member| { for (tuple_members) |member| {
const member_T = @field(tuple, member.name); const member_T = @field(tuple, member.name);
if (@TypeOf(member_T) == type) { if (@TypeOf(member_T) == type) {