diff options
| author | Alex Macleod <alex@macleod.io> | 2024-04-17 14:40:00 +0000 |
|---|---|---|
| committer | Alex Macleod <alex@macleod.io> | 2024-04-17 14:40:00 +0000 |
| commit | 66362efb09bfaa8ee85a97b350d6c97174c0ad93 (patch) | |
| tree | 18d567e829d6b855867e96752456959ac2c4faae /tests/ui | |
| parent | cdd6336386a0cdd164f912bab1038e02871e1ee4 (diff) | |
| download | rust-66362efb09bfaa8ee85a97b350d6c97174c0ad93.tar.gz rust-66362efb09bfaa8ee85a97b350d6c97174c0ad93.zip | |
Don't suggest `Box::default()` in functions with differing generics
Diffstat (limited to 'tests/ui')
| -rw-r--r-- | tests/ui/box_default.fixed | 12 | ||||
| -rw-r--r-- | tests/ui/box_default.rs | 12 | ||||
| -rw-r--r-- | tests/ui/box_default.stderr | 8 |
3 files changed, 31 insertions, 1 deletions
diff --git a/tests/ui/box_default.fixed b/tests/ui/box_default.fixed index 6c2896b3aa0..1f2f57c2507 100644 --- a/tests/ui/box_default.fixed +++ b/tests/ui/box_default.fixed @@ -65,6 +65,8 @@ fn main() { // Would have a suggestion after https://github.com/rust-lang/rust/blob/fdd030127cc68afec44a8d3f6341525dd34e50ae/compiler/rustc_middle/src/ty/diagnostics.rs#L554-L563 let mut unnameable = Box::new(Option::default()); let _ = unnameable.insert(|| {}); + + let _ = Box::into_raw(Box::new(String::default())); } fn ret_ty_fn() -> Box<bool> { @@ -75,6 +77,16 @@ fn call_ty_fn(_b: Box<u8>) { issue_9621_dyn_trait(); } +struct X<T>(T); + +impl<T: Default> X<T> { + fn x(_: Box<T>) {} + + fn same_generic_param() { + Self::x(Box::default()); + } +} + use std::io::{Read, Result}; impl Read for ImplementsDefault { diff --git a/tests/ui/box_default.rs b/tests/ui/box_default.rs index e19a62a9022..addfebc24f5 100644 --- a/tests/ui/box_default.rs +++ b/tests/ui/box_default.rs @@ -65,6 +65,8 @@ fn main() { // Would have a suggestion after https://github.com/rust-lang/rust/blob/fdd030127cc68afec44a8d3f6341525dd34e50ae/compiler/rustc_middle/src/ty/diagnostics.rs#L554-L563 let mut unnameable = Box::new(Option::default()); let _ = unnameable.insert(|| {}); + + let _ = Box::into_raw(Box::new(String::default())); } fn ret_ty_fn() -> Box<bool> { @@ -75,6 +77,16 @@ fn call_ty_fn(_b: Box<u8>) { issue_9621_dyn_trait(); } +struct X<T>(T); + +impl<T: Default> X<T> { + fn x(_: Box<T>) {} + + fn same_generic_param() { + Self::x(Box::new(T::default())); + } +} + use std::io::{Read, Result}; impl Read for ImplementsDefault { diff --git a/tests/ui/box_default.stderr b/tests/ui/box_default.stderr index f172a875dce..39fd0d29bbf 100644 --- a/tests/ui/box_default.stderr +++ b/tests/ui/box_default.stderr @@ -55,5 +55,11 @@ error: `Box::new(_)` of default value LL | call_ty_fn(Box::new(u8::default())); | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::default()` -error: aborting due to 9 previous errors +error: `Box::new(_)` of default value + --> tests/ui/box_default.rs:86:17 + | +LL | Self::x(Box::new(T::default())); + | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `Box::default()` + +error: aborting due to 10 previous errors |
