@@ -632,6 +632,13 @@ mod verify {
632
632
let _ = NonZero :: <$target>:: try_from( x) . unwrap( ) ;
633
633
}
634
634
} ;
635
+ ( $source: ty => $target: ty, $harness_infallible: ident, ) => {
636
+ #[ kani:: proof]
637
+ pub fn $harness_infallible( ) {
638
+ let x: NonZero :: <$source> = kani:: any( ) ;
639
+ let _ = NonZero :: <$target>:: try_from( x) . unwrap( ) ;
640
+ }
641
+ }
635
642
}
636
643
637
644
// unsigned non-zero integer -> unsigned non-zero integer fallible
@@ -650,11 +657,20 @@ mod verify {
650
657
check_nonzero_u16_try_from_nonzero_u32,
651
658
check_nonzero_u16_try_from_nonzero_u32_should_panic,
652
659
) ;
660
+
661
+ #[ cfg( target_pointer_width = "16" ) ]
653
662
generate_nonzero_int_try_from_nonzero_int_harness ! (
654
663
u32 => usize ,
655
664
check_nonzero_usize_try_from_nonzero_u32,
656
665
check_nonzero_usize_try_from_nonzero_u32_should_panic,
657
666
) ;
667
+
668
+ #[ cfg( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ]
669
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
670
+ u32 => usize ,
671
+ check_nonzero_usize_try_from_nonzero_u32_infallible,
672
+ ) ;
673
+
658
674
generate_nonzero_int_try_from_nonzero_int_harness ! (
659
675
u64 => u8 ,
660
676
check_nonzero_u8_try_from_nonzero_u64,
@@ -670,11 +686,20 @@ mod verify {
670
686
check_nonzero_u32_try_from_nonzero_u64,
671
687
check_nonzero_u32_try_from_nonzero_u64_should_panic,
672
688
) ;
689
+
690
+ #[ cfg( any( target_pointer_width = "16" , target_pointer_width = "32" ) ) ]
673
691
generate_nonzero_int_try_from_nonzero_int_harness ! (
674
692
u64 => usize ,
675
693
check_nonzero_usize_try_from_nonzero_u64,
676
694
check_nonzero_usize_try_from_nonzero_u64_should_panic,
677
695
) ;
696
+
697
+ #[ cfg( target_pointer_width = "64" ) ]
698
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
699
+ u64 => usize ,
700
+ check_nonzero_usize_try_from_nonzero_u64_infallible,
701
+ ) ;
702
+
678
703
generate_nonzero_int_try_from_nonzero_int_harness ! (
679
704
u128 => u8 ,
680
705
check_nonzero_u8_try_from_nonzero_u128,
@@ -705,25 +730,40 @@ mod verify {
705
730
check_nonzero_u8_try_from_nonzero_usize,
706
731
check_nonzero_u8_try_from_nonzero_usize_should_panic,
707
732
) ;
733
+
734
+ #[ cfg( target_pointer_width = "16" ) ]
735
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
736
+ usize => u16 ,
737
+ check_nonzero_u16_try_from_nonzero_usize_infallible,
738
+ ) ;
739
+
740
+ #[ cfg( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ]
708
741
generate_nonzero_int_try_from_nonzero_int_harness ! (
709
742
usize => u16 ,
710
743
check_nonzero_u16_try_from_nonzero_usize,
711
744
check_nonzero_u16_try_from_nonzero_usize_should_panic,
712
745
) ;
746
+
747
+ #[ cfg( any( target_pointer_width = "16" , target_pointer_width = "32" ) ) ]
748
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
749
+ usize => u32 ,
750
+ check_nonzero_u32_try_from_nonzero_usize_infallible,
751
+ ) ;
752
+
753
+ #[ cfg( target_pointer_width = "64" ) ]
713
754
generate_nonzero_int_try_from_nonzero_int_harness ! (
714
755
usize => u32 ,
715
756
check_nonzero_u32_try_from_nonzero_usize,
716
757
check_nonzero_u32_try_from_nonzero_usize_should_panic,
717
758
) ;
759
+
718
760
generate_nonzero_int_try_from_nonzero_int_harness ! (
719
761
usize => u64 ,
720
- check_nonzero_u64_try_from_nonzero_usize,
721
- check_nonzero_u64_try_from_nonzero_usize_should_panic,
762
+ check_nonzero_u64_try_from_nonzero_usize_infallible,
722
763
) ;
723
764
generate_nonzero_int_try_from_nonzero_int_harness ! (
724
765
usize => u128 ,
725
- check_nonzero_u128_try_from_nonzero_usize,
726
- check_nonzero_u128_try_from_nonzero_usize_should_panic,
766
+ check_nonzero_u128_try_from_nonzero_usize_infallible,
727
767
) ;
728
768
729
769
// signed non-zero integer -> signed non-zero integer fallible
@@ -742,11 +782,20 @@ mod verify {
742
782
check_nonzero_i16_try_from_nonzero_i32,
743
783
check_nonzero_i16_try_from_nonzero_i32_should_panic,
744
784
) ;
785
+
786
+ #[ cfg( target_pointer_width = "16" ) ]
745
787
generate_nonzero_int_try_from_nonzero_int_harness ! (
746
788
i32 => isize ,
747
789
check_nonzero_isize_try_from_nonzero_i32,
748
790
check_nonzero_isize_try_from_nonzero_i32_should_panic,
749
791
) ;
792
+
793
+ #[ cfg( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ]
794
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
795
+ i32 => isize ,
796
+ check_nonzero_isize_try_from_nonzero_i32_infallible,
797
+ ) ;
798
+
750
799
generate_nonzero_int_try_from_nonzero_int_harness ! (
751
800
i64 => i8 ,
752
801
check_nonzero_i8_try_from_nonzero_i64,
@@ -762,11 +811,20 @@ mod verify {
762
811
check_nonzero_i32_try_from_nonzero_i64,
763
812
check_nonzero_i32_try_from_nonzero_i64_should_panic,
764
813
) ;
814
+
815
+ #[ cfg( any( target_pointer_width = "16" , target_pointer_width = "32" ) ) ]
765
816
generate_nonzero_int_try_from_nonzero_int_harness ! (
766
817
i64 => isize ,
767
818
check_nonzero_isize_try_from_nonzero_i64,
768
819
check_nonzero_isize_try_from_nonzero_i64_should_panic,
769
820
) ;
821
+
822
+ #[ cfg( target_pointer_width = "64" ) ]
823
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
824
+ i64 => isize ,
825
+ check_nonzero_isize_try_from_nonzero_i64_infallible,
826
+ ) ;
827
+
770
828
generate_nonzero_int_try_from_nonzero_int_harness ! (
771
829
i128 => i8 ,
772
830
check_nonzero_i8_try_from_nonzero_i128,
@@ -797,25 +855,40 @@ mod verify {
797
855
check_nonzero_i8_try_from_nonzero_isize,
798
856
check_nonzero_i8_try_from_nonzero_isize_should_panic,
799
857
) ;
858
+
859
+ #[ cfg( target_pointer_width = "16" ) ]
860
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
861
+ isize => i16 ,
862
+ check_nonzero_i16_try_from_nonzero_isize_infallible,
863
+ ) ;
864
+
865
+ #[ cfg( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ]
800
866
generate_nonzero_int_try_from_nonzero_int_harness ! (
801
867
isize => i16 ,
802
868
check_nonzero_i16_try_from_nonzero_isize,
803
869
check_nonzero_i16_try_from_nonzero_isize_should_panic,
804
870
) ;
871
+
872
+ #[ cfg( any( target_pointer_width = "16" , target_pointer_width = "32" ) ) ]
873
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
874
+ isize => i32 ,
875
+ check_nonzero_i32_try_from_nonzero_isize_infallible,
876
+ ) ;
877
+
878
+ #[ cfg( target_pointer_width = "64" ) ]
805
879
generate_nonzero_int_try_from_nonzero_int_harness ! (
806
880
isize => i32 ,
807
881
check_nonzero_i32_try_from_nonzero_isize,
808
882
check_nonzero_i32_try_from_nonzero_isize_should_panic,
809
883
) ;
884
+
810
885
generate_nonzero_int_try_from_nonzero_int_harness ! (
811
886
isize => i64 ,
812
- check_nonzero_i64_try_from_nonzero_isize,
813
- check_nonzero_i64_try_from_nonzero_isize_should_panic,
887
+ check_nonzero_i64_try_from_nonzero_isize_infallible,
814
888
) ;
815
889
generate_nonzero_int_try_from_nonzero_int_harness ! (
816
890
isize => i128 ,
817
- check_nonzero_i128_try_from_nonzero_isize,
818
- check_nonzero_i128_try_from_nonzero_isize_should_panic,
891
+ check_nonzero_i128_try_from_nonzero_isize_infallible,
819
892
) ;
820
893
821
894
// unsigned non-zero integer -> signed non-zero integer fallible
@@ -834,11 +907,20 @@ mod verify {
834
907
check_nonzero_i16_try_from_nonzero_u16,
835
908
check_nonzero_i16_try_from_nonzero_u16_should_panic,
836
909
) ;
910
+
911
+ #[ cfg( target_pointer_width = "16" ) ]
837
912
generate_nonzero_int_try_from_nonzero_int_harness ! (
838
913
u16 => isize ,
839
914
check_nonzero_isize_try_from_nonzero_u16,
840
915
check_nonzero_isize_try_from_nonzero_u16_should_panic,
841
916
) ;
917
+
918
+ #[ cfg( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ]
919
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
920
+ u16 => isize ,
921
+ check_nonzero_isize_try_from_nonzero_u16_infallible,
922
+ ) ;
923
+
842
924
generate_nonzero_int_try_from_nonzero_int_harness ! (
843
925
u32 => i8 ,
844
926
check_nonzero_i8_try_from_nonzero_u32,
@@ -854,11 +936,20 @@ mod verify {
854
936
check_nonzero_i32_try_from_nonzero_u32,
855
937
check_nonzero_i32_try_from_nonzero_u32_should_panic,
856
938
) ;
939
+
940
+ #[ cfg( any( target_pointer_width = "16" , target_pointer_width = "32" ) ) ]
857
941
generate_nonzero_int_try_from_nonzero_int_harness ! (
858
942
u32 => isize ,
859
943
check_nonzero_isize_try_from_nonzero_u32,
860
944
check_nonzero_isize_try_from_nonzero_u32_should_panic,
861
945
) ;
946
+
947
+ #[ cfg( target_pointer_width = "64" ) ]
948
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
949
+ u32 => isize ,
950
+ check_nonzero_isize_try_from_nonzero_u32_infallible,
951
+ ) ;
952
+
862
953
generate_nonzero_int_try_from_nonzero_int_harness ! (
863
954
u64 => i8 ,
864
955
check_nonzero_i8_try_from_nonzero_u64,
@@ -924,20 +1015,36 @@ mod verify {
924
1015
check_nonzero_i16_try_from_nonzero_usize,
925
1016
check_nonzero_i16_try_from_nonzero_usize_should_panic,
926
1017
) ;
1018
+
1019
+ #[ cfg( target_pointer_width = "16" ) ]
1020
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
1021
+ usize => i32 ,
1022
+ check_nonzero_i32_try_from_nonzero_usize_infallible,
1023
+ ) ;
1024
+
1025
+ #[ cfg( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ]
927
1026
generate_nonzero_int_try_from_nonzero_int_harness ! (
928
1027
usize => i32 ,
929
1028
check_nonzero_i32_try_from_nonzero_usize,
930
1029
check_nonzero_i32_try_from_nonzero_usize_should_panic,
931
1030
) ;
1031
+
1032
+ #[ cfg( any( target_pointer_width = "16" , target_pointer_width = "32" ) ) ]
1033
+ generate_nonzero_int_try_from_nonzero_int_harness ! (
1034
+ usize => i64 ,
1035
+ check_nonzero_i64_try_from_nonzero_usize_infallible,
1036
+ ) ;
1037
+
1038
+ #[ cfg( target_pointer_width = "64" ) ]
932
1039
generate_nonzero_int_try_from_nonzero_int_harness ! (
933
1040
usize => i64 ,
934
1041
check_nonzero_i64_try_from_nonzero_usize,
935
1042
check_nonzero_i64_try_from_nonzero_usize_should_panic,
936
1043
) ;
1044
+
937
1045
generate_nonzero_int_try_from_nonzero_int_harness ! (
938
1046
usize => i128 ,
939
- check_nonzero_i128_try_from_nonzero_usize,
940
- check_nonzero_i128_try_from_nonzero_usize_should_panic,
1047
+ check_nonzero_i128_try_from_nonzero_usize_infallible,
941
1048
) ;
942
1049
generate_nonzero_int_try_from_nonzero_int_harness ! (
943
1050
usize => isize ,
0 commit comments