| ... | ... | @@ -628,7 +628,7 @@ pub fn DeclEnum(comptime T: type) type { |
| 628 | 628 | } |
| 629 | 629 | return @Type(.{ |
| 630 | 630 | .@"enum" = .{ |
| 631 | | .tag_type = std.math.IntFittingRange(0, fieldInfos.len - 1), |
| 631 | .tag_type = std.math.IntFittingRange(0, if (fieldInfos.len == 0) 0 else fieldInfos.len - 1), |
| 632 | 632 | .fields = &enumDecls, |
| 633 | 633 | .decls = &decls, |
| 634 | 634 | .is_exhaustive = true, |
| ... | ... | @@ -654,9 +654,12 @@ test DeclEnum { |
| 654 | 654 | pub const b: void = {}; |
| 655 | 655 | pub const c: f32 = 0; |
| 656 | 656 | }; |
| 657 | const D = struct {}; |
| 658 | |
| 657 | 659 | try expectEqualEnum(enum { a }, DeclEnum(A)); |
| 658 | 660 | try expectEqualEnum(enum { a, b, c }, DeclEnum(B)); |
| 659 | 661 | try expectEqualEnum(enum { a, b, c }, DeclEnum(C)); |
| 662 | try expectEqualEnum(enum {}, DeclEnum(D)); |
| 660 | 663 | } |
| 661 | 664 | |
| 662 | 665 | pub fn Tag(comptime T: type) type { |