@@ -434,7 +434,10 @@ impl Layout {
434
434
/// On arithmetic overflow, returns `LayoutError`.
435
435
#[ unstable( feature = "alloc_layout_extra" , issue = "55724" ) ]
436
436
#[ inline]
437
- #[ ensures( |result| result. is_err( ) || result. as_ref( ) . unwrap( ) . size( ) == n * self . size( ) ) ]
437
+ // the below multiplication might be too costly to prove at this time
438
+ // #[ensures(|result| result.is_err() || result.as_ref().unwrap().size() == n * self.size())]
439
+ // use the weaker statement below for now
440
+ #[ ensures( |result| result. is_err( ) || n == 0 || result. as_ref( ) . unwrap( ) . size( ) >= self . size( ) ) ]
438
441
#[ ensures( |result| result. is_err( ) || result. as_ref( ) . unwrap( ) . align( ) == self . align( ) ) ]
439
442
pub fn repeat_packed ( & self , n : usize ) -> Result < Self , LayoutError > {
440
443
let size = self . size ( ) . checked_mul ( n) . ok_or ( LayoutError ) ?;
@@ -450,9 +453,6 @@ impl Layout {
450
453
/// On arithmetic overflow, returns `LayoutError`.
451
454
#[ unstable( feature = "alloc_layout_extra" , issue = "55724" ) ]
452
455
#[ inline]
453
- // the below is wrong but was written in a previous commit; keeping it for now to confirm that
454
- // this is caught
455
- #[ ensures( |result| result. is_err( ) || result. as_ref( ) . unwrap( ) . size( ) <= next. size( ) ) ]
456
456
#[ ensures( |result| result. is_err( ) || result. as_ref( ) . unwrap( ) . size( ) == self . size( ) + next. size( ) ) ]
457
457
#[ ensures( |result| result. is_err( ) || result. as_ref( ) . unwrap( ) . align( ) == self . align( ) ) ]
458
458
pub fn extend_packed ( & self , next : Self ) -> Result < Self , LayoutError > {
0 commit comments