diff options
Diffstat (limited to 'tests/ui/redundant_allocation.rs')
| -rw-r--r-- | tests/ui/redundant_allocation.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/ui/redundant_allocation.rs b/tests/ui/redundant_allocation.rs index 9eb58a3e53f..b3257c04f82 100644 --- a/tests/ui/redundant_allocation.rs +++ b/tests/ui/redundant_allocation.rs @@ -14,14 +14,24 @@ mod outer_box { use std::sync::Arc; pub fn box_test6<T>(foo: Box<Rc<T>>) {} + //~^ ERROR: usage of `Box<Rc<T>>` + //~| NOTE: `Rc<T>` is already on the heap, `Box<Rc<T>>` makes an extra allocation pub fn box_test7<T>(foo: Box<Arc<T>>) {} + //~^ ERROR: usage of `Box<Arc<T>>` + //~| NOTE: `Arc<T>` is already on the heap, `Box<Arc<T>>` makes an extra allocation pub fn box_test8() -> Box<Rc<SubT<usize>>> { + //~^ ERROR: usage of `Box<Rc<SubT<usize>>>` + //~| NOTE: `Rc<SubT<usize>>` is already on the heap, `Box<Rc<SubT<usize>>>` makes an e unimplemented!(); } pub fn box_test9<T>(foo: Box<Arc<T>>) -> Box<Arc<SubT<T>>> { + //~^ ERROR: usage of `Box<Arc<T>>` + //~| NOTE: `Arc<T>` is already on the heap, `Box<Arc<T>>` makes an extra allocation + //~| ERROR: usage of `Box<Arc<SubT<T>>>` + //~| NOTE: `Arc<SubT<T>>` is already on the heap, `Box<Arc<SubT<T>>>` makes an extra a unimplemented!(); } } @@ -33,14 +43,24 @@ mod outer_rc { use std::sync::Arc; pub fn rc_test5(a: Rc<Box<bool>>) {} + //~^ ERROR: usage of `Rc<Box<bool>>` + //~| NOTE: `Box<bool>` is already on the heap, `Rc<Box<bool>>` makes an extra allocati pub fn rc_test7(a: Rc<Arc<bool>>) {} + //~^ ERROR: usage of `Rc<Arc<bool>>` + //~| NOTE: `Arc<bool>` is already on the heap, `Rc<Arc<bool>>` makes an extra allocati pub fn rc_test8() -> Rc<Box<SubT<usize>>> { + //~^ ERROR: usage of `Rc<Box<SubT<usize>>>` + //~| NOTE: `Box<SubT<usize>>` is already on the heap, `Rc<Box<SubT<usize>>>` makes an unimplemented!(); } pub fn rc_test9<T>(foo: Rc<Arc<T>>) -> Rc<Arc<SubT<T>>> { + //~^ ERROR: usage of `Rc<Arc<T>>` + //~| NOTE: `Arc<T>` is already on the heap, `Rc<Arc<T>>` makes an extra allocation + //~| ERROR: usage of `Rc<Arc<SubT<T>>>` + //~| NOTE: `Arc<SubT<T>>` is already on the heap, `Rc<Arc<SubT<T>>>` makes an extra al unimplemented!(); } } @@ -52,14 +72,24 @@ mod outer_arc { use std::sync::Arc; pub fn arc_test5(a: Arc<Box<bool>>) {} + //~^ ERROR: usage of `Arc<Box<bool>>` + //~| NOTE: `Box<bool>` is already on the heap, `Arc<Box<bool>>` makes an extra allocat pub fn arc_test6(a: Arc<Rc<bool>>) {} + //~^ ERROR: usage of `Arc<Rc<bool>>` + //~| NOTE: `Rc<bool>` is already on the heap, `Arc<Rc<bool>>` makes an extra allocatio pub fn arc_test8() -> Arc<Box<SubT<usize>>> { + //~^ ERROR: usage of `Arc<Box<SubT<usize>>>` + //~| NOTE: `Box<SubT<usize>>` is already on the heap, `Arc<Box<SubT<usize>>>` makes an unimplemented!(); } pub fn arc_test9<T>(foo: Arc<Rc<T>>) -> Arc<Rc<SubT<T>>> { + //~^ ERROR: usage of `Arc<Rc<T>>` + //~| NOTE: `Rc<T>` is already on the heap, `Arc<Rc<T>>` makes an extra allocation + //~| ERROR: usage of `Arc<Rc<SubT<T>>>` + //~| NOTE: `Rc<SubT<T>>` is already on the heap, `Arc<Rc<SubT<T>>>` makes an extra all unimplemented!(); } } @@ -82,6 +112,8 @@ mod box_dyn { pub fn test_rc(_: Rc<Box<dyn T>>) {} pub fn test_arc(_: Arc<Box<dyn T>>) {} pub fn test_rc_box(_: Rc<Box<Box<dyn T>>>) {} + //~^ ERROR: usage of `Rc<Box<Box<dyn T>>>` + //~| NOTE: `Box<Box<dyn T>>` is already on the heap, `Rc<Box<Box<dyn T>>>` makes an ex } // https://github.com/rust-lang/rust-clippy/issues/8604 @@ -114,9 +146,17 @@ mod box_fat_ptr { pub fn test_box_custom(_: Box<Box<DynSized>>) {} pub fn test_rc_box_str(_: Rc<Box<Box<str>>>) {} + //~^ ERROR: usage of `Rc<Box<Box<str>>>` + //~| NOTE: `Box<Box<str>>` is already on the heap, `Rc<Box<Box<str>>>` makes an extra pub fn test_rc_box_slice(_: Rc<Box<Box<[usize]>>>) {} + //~^ ERROR: usage of `Rc<Box<Box<[usize]>>>` + //~| NOTE: `Box<Box<[usize]>>` is already on the heap, `Rc<Box<Box<[usize]>>>` makes a pub fn test_rc_box_path(_: Rc<Box<Box<Path>>>) {} + //~^ ERROR: usage of `Rc<Box<Box<Path>>>` + //~| NOTE: `Box<Box<Path>>` is already on the heap, `Rc<Box<Box<Path>>>` makes an extr pub fn test_rc_box_custom(_: Rc<Box<Box<DynSized>>>) {} + //~^ ERROR: usage of `Rc<Box<Box<DynSized>>>` + //~| NOTE: `Box<Box<DynSized>>` is already on the heap, `Rc<Box<Box<DynSized>>>` makes } fn main() {} |
