Skip to content

Commit 153f5d1

Browse files
committed
Use autoharness for num::<impl *>::unchecked_{add,sub}
1 parent e7b0dc4 commit 153f5d1

File tree

2 files changed

+24
-50
lines changed

2 files changed

+24
-50
lines changed

.github/workflows/kani.yml

+24
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,18 @@ jobs:
8282
--include-pattern alloc::layout::Layout::from_size_align \
8383
--include-pattern ascii::ascii_char::AsciiChar::from_u8 \
8484
--include-pattern char::convert::from_u32_unchecked \
85+
--include-pattern "num::<impl i8>::unchecked_add" \
86+
--include-pattern "num::<impl i16>::unchecked_add" \
87+
--include-pattern "num::<impl i32>::unchecked_add" \
88+
--include-pattern "num::<impl i64>::unchecked_add" \
89+
--include-pattern "num::<impl i128>::unchecked_add" \
90+
--include-pattern "num::<impl isize>::unchecked_add" \
91+
--include-pattern "num::<impl u8>::unchecked_add" \
92+
--include-pattern "num::<impl u16>::unchecked_add" \
93+
--include-pattern "num::<impl u32>::unchecked_add" \
94+
--include-pattern "num::<impl u64>::unchecked_add" \
95+
--include-pattern "num::<impl u128>::unchecked_add" \
96+
--include-pattern "num::<impl usize>::unchecked_add" \
8597
--include-pattern "num::<impl i8>::unchecked_neg" \
8698
--include-pattern "num::<impl i16>::unchecked_neg" \
8799
--include-pattern "num::<impl i32>::unchecked_neg" \
@@ -100,6 +112,18 @@ jobs:
100112
--include-pattern "num::<impl u64>::unchecked_sh" \
101113
--include-pattern "num::<impl u128>::unchecked_sh" \
102114
--include-pattern "num::<impl usize>::unchecked_sh" \
115+
--include-pattern "num::<impl i8>::unchecked_sub" \
116+
--include-pattern "num::<impl i16>::unchecked_sub" \
117+
--include-pattern "num::<impl i32>::unchecked_sub" \
118+
--include-pattern "num::<impl i64>::unchecked_sub" \
119+
--include-pattern "num::<impl i128>::unchecked_sub" \
120+
--include-pattern "num::<impl isize>::unchecked_sub" \
121+
--include-pattern "num::<impl u8>::unchecked_sub" \
122+
--include-pattern "num::<impl u16>::unchecked_sub" \
123+
--include-pattern "num::<impl u32>::unchecked_sub" \
124+
--include-pattern "num::<impl u64>::unchecked_sub" \
125+
--include-pattern "num::<impl u128>::unchecked_sub" \
126+
--include-pattern "num::<impl usize>::unchecked_sub" \
103127
--include-pattern "num::<impl i8>::wrapping_sh" \
104128
--include-pattern "num::<impl i16>::wrapping_sh" \
105129
--include-pattern "num::<impl i32>::wrapping_sh" \

library/core/src/num/mod.rs

-50
Original file line numberDiff line numberDiff line change
@@ -1739,30 +1739,6 @@ mod verify {
17391739
}
17401740
}
17411741

1742-
// `unchecked_add` proofs
1743-
//
1744-
// Target types:
1745-
// i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
1746-
//
1747-
// Target contracts:
1748-
// Preconditions: No overflow should occur
1749-
// #[requires(!self.overflowing_add(rhs).1)]
1750-
//
1751-
// Target function:
1752-
// pub const unsafe fn unchecked_add(self, rhs: Self) -> Self
1753-
generate_unchecked_math_harness!(i8, unchecked_add, checked_unchecked_add_i8);
1754-
generate_unchecked_math_harness!(i16, unchecked_add, checked_unchecked_add_i16);
1755-
generate_unchecked_math_harness!(i32, unchecked_add, checked_unchecked_add_i32);
1756-
generate_unchecked_math_harness!(i64, unchecked_add, checked_unchecked_add_i64);
1757-
generate_unchecked_math_harness!(i128, unchecked_add, checked_unchecked_add_i128);
1758-
generate_unchecked_math_harness!(isize, unchecked_add, checked_unchecked_add_isize);
1759-
generate_unchecked_math_harness!(u8, unchecked_add, checked_unchecked_add_u8);
1760-
generate_unchecked_math_harness!(u16, unchecked_add, checked_unchecked_add_u16);
1761-
generate_unchecked_math_harness!(u32, unchecked_add, checked_unchecked_add_u32);
1762-
generate_unchecked_math_harness!(u64, unchecked_add, checked_unchecked_add_u64);
1763-
generate_unchecked_math_harness!(u128, unchecked_add, checked_unchecked_add_u128);
1764-
generate_unchecked_math_harness!(usize, unchecked_add, checked_unchecked_add_usize);
1765-
17661742
// `unchecked_mul` proofs
17671743
//
17681744
// Target types:
@@ -1920,32 +1896,6 @@ mod verify {
19201896
usize::MAX
19211897
);
19221898

1923-
// `unchecked_sub` proofs
1924-
//
1925-
// Target types:
1926-
// i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
1927-
//
1928-
// Target contracts:
1929-
// Preconditions: No overflow should occur
1930-
// #[requires(!self.overflowing_sub(rhs).1)]
1931-
//
1932-
// Target function:
1933-
// pub const unsafe fn unchecked_sub(self, rhs: Self) -> Self
1934-
//
1935-
// This function performs an unchecked subtraction operation.
1936-
generate_unchecked_math_harness!(i8, unchecked_sub, checked_unchecked_sub_i8);
1937-
generate_unchecked_math_harness!(i16, unchecked_sub, checked_unchecked_sub_i16);
1938-
generate_unchecked_math_harness!(i32, unchecked_sub, checked_unchecked_sub_i32);
1939-
generate_unchecked_math_harness!(i64, unchecked_sub, checked_unchecked_sub_i64);
1940-
generate_unchecked_math_harness!(i128, unchecked_sub, checked_unchecked_sub_i128);
1941-
generate_unchecked_math_harness!(isize, unchecked_sub, checked_unchecked_sub_isize);
1942-
generate_unchecked_math_harness!(u8, unchecked_sub, checked_unchecked_sub_u8);
1943-
generate_unchecked_math_harness!(u16, unchecked_sub, checked_unchecked_sub_u16);
1944-
generate_unchecked_math_harness!(u32, unchecked_sub, checked_unchecked_sub_u32);
1945-
generate_unchecked_math_harness!(u64, unchecked_sub, checked_unchecked_sub_u64);
1946-
generate_unchecked_math_harness!(u128, unchecked_sub, checked_unchecked_sub_u128);
1947-
generate_unchecked_math_harness!(usize, unchecked_sub, checked_unchecked_sub_usize);
1948-
19491899
// Part_2 `carrying_mul` proofs
19501900
//
19511901
// ====================== u8 Harnesses ======================

0 commit comments

Comments
 (0)