@@ -567,7 +567,12 @@ fn computeTypeHashInternal(hasher: *TypeHashFn, comptime T: type) void {
567
567
}
568
568
},
569
569
.Enum = > | list | {
570
- const Tag = if (list .tag_type == usize ) u64 else list .tag_type ;
570
+ const Tag = if (list .tag_type == usize )
571
+ u64
572
+ else if (list .tag_type == isize )
573
+ i64
574
+ else
575
+ list .tag_type ;
571
576
if (list .is_exhaustive ) {
572
577
// Exhaustive enums only allow certain values, so we
573
578
// tag them via the value type
@@ -651,6 +656,8 @@ test "type hasher basics" {
651
656
testSameHash (enum (u8 ) { a , b , c }, enum (u8 ) { a , b , c });
652
657
testSameHash (enum (u8 ) { a , b , c , _ }, enum (u8 ) { c , b , a , _ });
653
658
testSameHash (enum (u8 ) { a = 1 , b = 6 , c = 9 }, enum (u8 ) { a = 1 , b = 6 , c = 9 });
659
+ testSameHash (enum (usize ) { a , b , c }, enum (u64 ) { a , b , c });
660
+ testSameHash (enum (isize ) { a , b , c }, enum (i64 ) { a , b , c });
654
661
testSameHash ([5 ]std .meta .Vector (4 , u32 ), [5 ]std .meta .Vector (4 , u32 ));
655
662
656
663
testSameHash (union (enum ) { a : u32 , b : f32 }, union (enum ) { a : u32 , b : f32 });
@@ -695,6 +702,14 @@ test "serialize basics" {
695
702
try testSerialize (enum (u8 ) { a , b , c }, .b );
696
703
try testSerialize (enum (u8 ) { a , b , c }, .c );
697
704
705
+ try testSerialize (enum (isize ) { a , b , c }, .a );
706
+ try testSerialize (enum (isize ) { a , b , c }, .b );
707
+ try testSerialize (enum (isize ) { a , b , c }, .c );
708
+
709
+ try testSerialize (enum (usize ) { a , b , c }, .a );
710
+ try testSerialize (enum (usize ) { a , b , c }, .b );
711
+ try testSerialize (enum (usize ) { a , b , c }, .c );
712
+
698
713
const TestEnum = enum (u8 ) { a , b , c , _ };
699
714
try testSerialize (TestEnum , .a );
700
715
try testSerialize (TestEnum , .b );
@@ -784,6 +799,14 @@ test "ser/des" {
784
799
try testSerDesAlloc (enum (u8 ) { a , b , c }, .b );
785
800
try testSerDesAlloc (enum (u8 ) { a , b , c }, .c );
786
801
802
+ try testSerDesAlloc (enum (usize ) { a , b , c }, .a );
803
+ try testSerDesAlloc (enum (usize ) { a , b , c }, .b );
804
+ try testSerDesAlloc (enum (usize ) { a , b , c }, .c );
805
+
806
+ try testSerDesAlloc (enum (isize ) { a , b , c }, .a );
807
+ try testSerDesAlloc (enum (isize ) { a , b , c }, .b );
808
+ try testSerDesAlloc (enum (isize ) { a , b , c }, .c );
809
+
787
810
const TestEnum = enum (u8 ) { a , b , c , _ };
788
811
try testSerDesAlloc (TestEnum , .a );
789
812
try testSerDesAlloc (TestEnum , .b );
0 commit comments