diff options
| author | Esteban Küber <esteban@kuber.com.ar> | 2022-12-13 19:52:42 -0800 |
|---|---|---|
| committer | Esteban Küber <esteban@kuber.com.ar> | 2022-12-15 10:27:05 -0800 |
| commit | e1b340195a04bc079df3bda8e627ad6e64938d50 (patch) | |
| tree | a77d10cee9c68437e4dfda5fa76f09c4474ced7e /src/test/ui | |
| parent | f19488064a4752703fde8a3596a9d90ca2095534 (diff) | |
Suggest `#[derive(Clone)]`
Diffstat (limited to 'src/test/ui')
4 files changed, 38 insertions, 1 deletions
diff --git a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed b/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed index 3e5ded6738b..4f9e93a47ed 100644 --- a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed +++ b/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.fixed @@ -3,6 +3,14 @@ fn wat<T: Clone>(t: &T) -> T { t.clone() //~ ERROR E0308 } +#[derive(Clone)] +struct Foo; + +fn wut(t: &Foo) -> Foo { + t.clone() //~ ERROR E0308 +} + fn main() { wat(&42); + wut(&Foo); } diff --git a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs b/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs index 1a5a38369ec..89b077d671a 100644 --- a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs +++ b/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.rs @@ -3,6 +3,13 @@ fn wat<T>(t: &T) -> T { t.clone() //~ ERROR E0308 } +struct Foo; + +fn wut(t: &Foo) -> Foo { + t.clone() //~ ERROR E0308 +} + fn main() { wat(&42); + wut(&Foo); } diff --git a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr b/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr index 01246955fae..26ab515d9b4 100644 --- a/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr +++ b/src/test/ui/suggestions/clone-on-unconstrained-borrowed-type-param.stderr @@ -20,6 +20,24 @@ help: consider restricting type parameter `T` LL | fn wat<T: Clone>(t: &T) -> T { | +++++++ -error: aborting due to previous error +error[E0308]: mismatched types + --> $DIR/clone-on-unconstrained-borrowed-type-param.rs:9:5 + | +LL | fn wut(t: &Foo) -> Foo { + | --- expected `Foo` because of return type +LL | t.clone() + | ^^^^^^^^^ expected struct `Foo`, found `&Foo` + | +note: `Foo` does not implement `Clone`, so `&Foo` was cloned instead + --> $DIR/clone-on-unconstrained-borrowed-type-param.rs:9:5 + | +LL | t.clone() + | ^ +help: consider annotating `Foo` with `#[derive(Clone)]` + | +LL | #[derive(Clone)] + | + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/typeck/explain_clone_autoref.stderr b/src/test/ui/typeck/explain_clone_autoref.stderr index faac680ea19..ff36e18d283 100644 --- a/src/test/ui/typeck/explain_clone_autoref.stderr +++ b/src/test/ui/typeck/explain_clone_autoref.stderr @@ -12,6 +12,10 @@ note: `NotClone` does not implement `Clone`, so `&NotClone` was cloned instead | LL | nc.clone() | ^^ +help: consider annotating `NotClone` with `#[derive(Clone)]` + | +LL | #[derive(Clone)] + | error: aborting due to previous error |
