@@ -4096,33 +4096,33 @@ mod verify {
40964096 } ) ;
40974097 }
40984098
4099- #[ kani:: proof_for_contract( copy) ]
4100- fn check_copy ( ) {
4101- run_with_arbitrary_ptrs :: < char > ( |src, dst| unsafe { copy ( src, dst, kani:: any ( ) ) } ) ;
4102- }
4103-
4104- #[ kani:: proof_for_contract( copy_nonoverlapping) ]
4105- fn check_copy_nonoverlapping ( ) {
4106- // Note: cannot use `ArbitraryPointer` here.
4107- // The `ArbitraryPtr` will arbitrarily initialize memory by indirectly invoking
4108- // `copy_nonoverlapping`.
4109- // Kani contract checking would fail due to existing restriction on calls to
4110- // the function under verification.
4111- let gen_any_ptr = |buf : & mut [ MaybeUninit < char > ; 100 ] | -> * mut char {
4112- let base = buf. as_mut_ptr ( ) as * mut u8 ;
4113- base. wrapping_add ( kani:: any_where ( |offset : & usize | * offset < 400 ) ) as * mut char
4114- } ;
4115- let mut buffer1 = [ MaybeUninit :: < char > :: uninit ( ) ; 100 ] ;
4116- for i in 0 ..100 {
4117- if kani:: any ( ) {
4118- buffer1[ i] = MaybeUninit :: new ( kani:: any ( ) ) ;
4119- }
4120- }
4121- let mut buffer2 = [ MaybeUninit :: < char > :: uninit ( ) ; 100 ] ;
4122- let src = gen_any_ptr ( & mut buffer1) ;
4123- let dst = if kani:: any ( ) { gen_any_ptr ( & mut buffer2) } else { gen_any_ptr ( & mut buffer1) } ;
4124- unsafe { copy_nonoverlapping ( src, dst, kani:: any ( ) ) }
4125- }
4099+ // #[kani::proof_for_contract(copy)]
4100+ // fn check_copy() {
4101+ // run_with_arbitrary_ptrs::<char>(|src, dst| unsafe { copy(src, dst, kani::any()) });
4102+ // }
4103+
4104+ // #[kani::proof_for_contract(copy_nonoverlapping)]
4105+ // fn check_copy_nonoverlapping() {
4106+ // // Note: cannot use `ArbitraryPointer` here.
4107+ // // The `ArbitraryPtr` will arbitrarily initialize memory by indirectly invoking
4108+ // // `copy_nonoverlapping`.
4109+ // // Kani contract checking would fail due to existing restriction on calls to
4110+ // // the function under verification.
4111+ // let gen_any_ptr = |buf: &mut [MaybeUninit<char>; 100]| -> *mut char {
4112+ // let base = buf.as_mut_ptr() as *mut u8;
4113+ // base.wrapping_add(kani::any_where(|offset: &usize| *offset < 400)) as *mut char
4114+ // };
4115+ // let mut buffer1 = [MaybeUninit::<char>::uninit(); 100];
4116+ // for i in 0..100 {
4117+ // if kani::any() {
4118+ // buffer1[i] = MaybeUninit::new(kani::any());
4119+ // }
4120+ // }
4121+ // let mut buffer2 = [MaybeUninit::<char>::uninit(); 100];
4122+ // let src = gen_any_ptr(&mut buffer1);
4123+ // let dst = if kani::any() { gen_any_ptr(&mut buffer2) } else { gen_any_ptr(&mut buffer1) };
4124+ // unsafe { copy_nonoverlapping(src, dst, kani::any()) }
4125+ // }
41264126
41274127 //We need this wrapper because transmute_unchecked is an intrinsic, for which Kani does
41284128 //not currently support contracts (https://github.com/model-checking/kani/issues/3345)
0 commit comments