Skip to content

Commit e7b0dc4

Browse files
committed
Use autoharness for num::<impl i*>::unchecked_neg
1 parent 2144ebe commit e7b0dc4

File tree

2 files changed

+6
-30
lines changed

2 files changed

+6
-30
lines changed

.github/workflows/kani.yml

+6
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ 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" \
8591
--include-pattern "num::<impl i8>::unchecked_sh" \
8692
--include-pattern "num::<impl i16>::unchecked_sh" \
8793
--include-pattern "num::<impl i32>::unchecked_sh" \

library/core/src/num/mod.rs

-30
Original file line numberDiff line numberDiff line change
@@ -1651,19 +1651,6 @@ 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-
16671654
/// A macro to generate Kani proof harnesses for the `carrying_mul` method,
16681655
///
16691656
/// The macro creates multiple harnesses for different ranges of input values,
@@ -1776,23 +1763,6 @@ mod verify {
17761763
generate_unchecked_math_harness!(u128, unchecked_add, checked_unchecked_add_u128);
17771764
generate_unchecked_math_harness!(usize, unchecked_add, checked_unchecked_add_usize);
17781765

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-
17961766
// `unchecked_mul` proofs
17971767
//
17981768
// Target types:

0 commit comments

Comments
 (0)