Skip to content

Commit 2144ebe

Browse files
committed
Use autoharness for num::<impl *>::unchecked_sh{l,r}
1 parent 0c1b5c3 commit 2144ebe

File tree

2 files changed

+12
-63
lines changed

2 files changed

+12
-63
lines changed

.github/workflows/kani.yml

Lines changed: 12 additions & 0 deletions
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_sh" \
86+
--include-pattern "num::<impl i16>::unchecked_sh" \
87+
--include-pattern "num::<impl i32>::unchecked_sh" \
88+
--include-pattern "num::<impl i64>::unchecked_sh" \
89+
--include-pattern "num::<impl i128>::unchecked_sh" \
90+
--include-pattern "num::<impl isize>::unchecked_sh" \
91+
--include-pattern "num::<impl u8>::unchecked_sh" \
92+
--include-pattern "num::<impl u16>::unchecked_sh" \
93+
--include-pattern "num::<impl u32>::unchecked_sh" \
94+
--include-pattern "num::<impl u64>::unchecked_sh" \
95+
--include-pattern "num::<impl u128>::unchecked_sh" \
96+
--include-pattern "num::<impl usize>::unchecked_sh" \
8597
--include-pattern "num::<impl i8>::wrapping_sh" \
8698
--include-pattern "num::<impl i16>::wrapping_sh" \
8799
--include-pattern "num::<impl i32>::wrapping_sh" \

library/core/src/num/mod.rs

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

1654-
// Verify `unchecked_{shl, shr}`
1655-
macro_rules! generate_unchecked_shift_harness {
1656-
($type:ty, $method:ident, $harness_name:ident) => {
1657-
#[kani::proof_for_contract($type::$method)]
1658-
pub fn $harness_name() {
1659-
let num1: $type = kani::any::<$type>();
1660-
let num2: u32 = kani::any::<u32>();
1661-
1662-
unsafe {
1663-
num1.$method(num2);
1664-
}
1665-
}
1666-
};
1667-
}
1668-
16691654
macro_rules! generate_unchecked_neg_harness {
16701655
($type:ty, $harness_name:ident) => {
16711656
#[kani::proof_for_contract($type::unchecked_neg)]
@@ -1965,54 +1950,6 @@ mod verify {
19651950
usize::MAX
19661951
);
19671952

1968-
// unchecked_shr proofs
1969-
//
1970-
// Target types:
1971-
// i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
1972-
//
1973-
// Target contracts:
1974-
// #[requires(rhs < <$ActualT>::BITS)]
1975-
//
1976-
// Target function:
1977-
// pub const unsafe fn unchecked_shr(self, rhs: u32) -> Self
1978-
generate_unchecked_shift_harness!(i8, unchecked_shr, checked_unchecked_shr_i8);
1979-
generate_unchecked_shift_harness!(i16, unchecked_shr, checked_unchecked_shr_i16);
1980-
generate_unchecked_shift_harness!(i32, unchecked_shr, checked_unchecked_shr_i32);
1981-
generate_unchecked_shift_harness!(i64, unchecked_shr, checked_unchecked_shr_i64);
1982-
generate_unchecked_shift_harness!(i128, unchecked_shr, checked_unchecked_shr_i128);
1983-
generate_unchecked_shift_harness!(isize, unchecked_shr, checked_unchecked_shr_isize);
1984-
generate_unchecked_shift_harness!(u8, unchecked_shr, checked_unchecked_shr_u8);
1985-
generate_unchecked_shift_harness!(u16, unchecked_shr, checked_unchecked_shr_u16);
1986-
generate_unchecked_shift_harness!(u32, unchecked_shr, checked_unchecked_shr_u32);
1987-
generate_unchecked_shift_harness!(u64, unchecked_shr, checked_unchecked_shr_u64);
1988-
generate_unchecked_shift_harness!(u128, unchecked_shr, checked_unchecked_shr_u128);
1989-
generate_unchecked_shift_harness!(usize, unchecked_shr, checked_unchecked_shr_usize);
1990-
1991-
// `unchecked_shl` proofs
1992-
//
1993-
// Target types:
1994-
// i{8,16,32,64,128,size} and u{8,16,32,64,128,size} -- 12 types in total
1995-
//
1996-
// Target contracts:
1997-
// #[requires(shift < Self::BITS)]
1998-
//
1999-
// Target function:
2000-
// pub const unsafe fn unchecked_shl(self, shift: u32) -> Self
2001-
//
2002-
// This function performs an unchecked bitwise left shift operation.
2003-
generate_unchecked_shift_harness!(i8, unchecked_shl, checked_unchecked_shl_i8);
2004-
generate_unchecked_shift_harness!(i16, unchecked_shl, checked_unchecked_shl_i16);
2005-
generate_unchecked_shift_harness!(i32, unchecked_shl, checked_unchecked_shl_i32);
2006-
generate_unchecked_shift_harness!(i64, unchecked_shl, checked_unchecked_shl_i64);
2007-
generate_unchecked_shift_harness!(i128, unchecked_shl, checked_unchecked_shl_i128);
2008-
generate_unchecked_shift_harness!(isize, unchecked_shl, checked_unchecked_shl_isize);
2009-
generate_unchecked_shift_harness!(u8, unchecked_shl, checked_unchecked_shl_u8);
2010-
generate_unchecked_shift_harness!(u16, unchecked_shl, checked_unchecked_shl_u16);
2011-
generate_unchecked_shift_harness!(u32, unchecked_shl, checked_unchecked_shl_u32);
2012-
generate_unchecked_shift_harness!(u64, unchecked_shl, checked_unchecked_shl_u64);
2013-
generate_unchecked_shift_harness!(u128, unchecked_shl, checked_unchecked_shl_u128);
2014-
generate_unchecked_shift_harness!(usize, unchecked_shl, checked_unchecked_shl_usize);
2015-
20161953
// `unchecked_sub` proofs
20171954
//
20181955
// Target types:

0 commit comments

Comments
 (0)