@@ -1593,11 +1593,10 @@ mod verify {
1593
1593
// `unchecked_add` proofs
1594
1594
//
1595
1595
// Target types:
1596
- // i{8,16,32,64,128} and u{8,16,32,64,128} -- 10 types in total
1596
+ // i{8,16,32,64,128, size } and u{8,16,32,64,128, size } -- 12 types in total
1597
1597
//
1598
1598
// Target contracts:
1599
1599
// #[requires(!self.overflowing_add(rhs).1)]
1600
- // #[ensures(|ret| *ret >= $SelfT::MIN && *ret <= $SelfT::MAX)]
1601
1600
//
1602
1601
// Target function:
1603
1602
// pub const unsafe fn unchecked_add(self, rhs: Self) -> Self
@@ -1651,6 +1650,16 @@ mod verify {
1651
1650
}
1652
1651
}
1653
1652
1653
+ #[ kani:: proof_for_contract( isize :: unchecked_add) ]
1654
+ pub fn check_unchecked_add_isize ( ) {
1655
+ let num1: isize = kani:: any :: < isize > ( ) ;
1656
+ let num2: isize = kani:: any :: < isize > ( ) ;
1657
+
1658
+ unsafe {
1659
+ num1. unchecked_add ( num2) ;
1660
+ }
1661
+ }
1662
+
1654
1663
#[ kani:: proof_for_contract( u8 :: unchecked_add) ]
1655
1664
pub fn check_unchecked_add_u8 ( ) {
1656
1665
let num1: u8 = kani:: any :: < u8 > ( ) ;
@@ -1700,4 +1709,14 @@ mod verify {
1700
1709
num1. unchecked_add ( num2) ;
1701
1710
}
1702
1711
}
1712
+
1713
+ #[ kani:: proof_for_contract( usize :: unchecked_add) ]
1714
+ pub fn check_unchecked_add_usize ( ) {
1715
+ let num1: usize = kani:: any :: < usize > ( ) ;
1716
+ let num2: usize = kani:: any :: < usize > ( ) ;
1717
+
1718
+ unsafe {
1719
+ num1. unchecked_add ( num2) ;
1720
+ }
1721
+ }
1703
1722
}
0 commit comments