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