Skip to content

Commit 3aefe47

Browse files
committed
Revert "Use autoharness for num::<impl i*>::unchecked_neg"
This reverts commit e7b0dc4.
1 parent a90ba68 commit 3aefe47

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

.github/workflows/kani.yml

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,6 @@ 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_neg" \
86-
--include-pattern "num::<impl i16>::unchecked_neg" \
87-
--include-pattern "num::<impl i32>::unchecked_neg" \
88-
--include-pattern "num::<impl i64>::unchecked_neg" \
89-
--include-pattern "num::<impl i128>::unchecked_neg" \
90-
--include-pattern "num::<impl isize>::unchecked_neg" \
9185
--include-pattern "num::<impl i8>::unchecked_sh" \
9286
--include-pattern "num::<impl i16>::unchecked_sh" \
9387
--include-pattern "num::<impl i32>::unchecked_sh" \

library/core/src/num/mod.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1651,6 +1651,19 @@ mod verify {
16511651
}
16521652
}
16531653

1654+
macro_rules! generate_unchecked_neg_harness {
1655+
($type:ty, $harness_name:ident) => {
1656+
#[kani::proof_for_contract($type::unchecked_neg)]
1657+
pub fn $harness_name() {
1658+
let num1: $type = kani::any::<$type>();
1659+
1660+
unsafe {
1661+
num1.unchecked_neg();
1662+
}
1663+
}
1664+
};
1665+
}
1666+
16541667
/// A macro to generate Kani proof harnesses for the `carrying_mul` method,
16551668
///
16561669
/// The macro creates multiple harnesses for different ranges of input values,
@@ -1763,6 +1776,23 @@ mod verify {
17631776
generate_unchecked_math_harness!(u128, unchecked_add, checked_unchecked_add_u128);
17641777
generate_unchecked_math_harness!(usize, unchecked_add, checked_unchecked_add_usize);
17651778

1779+
// `unchecked_neg` proofs
1780+
//
1781+
// Target types:
1782+
// i{8,16,32,64,128,size} -- 6 types in total
1783+
//
1784+
// Target contracts:
1785+
// #[requires(self != $SelfT::MIN)]
1786+
//
1787+
// Target function:
1788+
// pub const unsafe fn unchecked_neg(self) -> Self
1789+
generate_unchecked_neg_harness!(i8, checked_unchecked_neg_i8);
1790+
generate_unchecked_neg_harness!(i16, checked_unchecked_neg_i16);
1791+
generate_unchecked_neg_harness!(i32, checked_unchecked_neg_i32);
1792+
generate_unchecked_neg_harness!(i64, checked_unchecked_neg_i64);
1793+
generate_unchecked_neg_harness!(i128, checked_unchecked_neg_i128);
1794+
generate_unchecked_neg_harness!(isize, checked_unchecked_neg_isize);
1795+
17661796
// `unchecked_mul` proofs
17671797
//
17681798
// Target types:

0 commit comments

Comments
 (0)