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