summaryrefslogtreecommitdiffstats
path: root/tests/ui/suggestions/copied-and-cloned.fixed
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/suggestions/copied-and-cloned.fixed')
-rw-r--r--tests/ui/suggestions/copied-and-cloned.fixed34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/ui/suggestions/copied-and-cloned.fixed b/tests/ui/suggestions/copied-and-cloned.fixed
index f801403fe..4cecf9e26 100644
--- a/tests/ui/suggestions/copied-and-cloned.fixed
+++ b/tests/ui/suggestions/copied-and-cloned.fixed
@@ -2,6 +2,16 @@
fn expect<T>(_: T) {}
+struct Issue114925 {
+ x: Option<String>,
+}
+
+fn issue_114925(lol: &mut Issue114925, x: Option<&String>) {
+ lol.x = x.clone().cloned();
+ //~^ ERROR mismatched types
+ //~| HELP use `Option::cloned` to clone the value inside the `Option`
+}
+
fn main() {
let x = Some(&());
expect::<Option<()>>(x.copied());
@@ -20,4 +30,28 @@ fn main() {
expect::<Result<String, ()>>(x.cloned());
//~^ ERROR mismatched types
//~| HELP use `Result::cloned` to clone the value inside the `Result`
+
+ let s = String::new();
+ let x = Some(s.clone());
+ let y = Some(&s);
+ println!("{}", x == y.cloned());
+ //~^ ERROR mismatched types
+ //~| HELP use `Option::cloned` to clone the value inside the `Option`
+ //FIXME(#114050) ~| HELP use `Option::as_ref` to convert `Option<String>` to `Option<&String>`
+
+ let mut s = ();
+ let x = Some(s);
+ let y = Some(&mut s);
+ println!("{}", x == y.copied());
+ //~^ ERROR mismatched types
+ //~| HELP use `Option::copied` to copy the value inside the `Option`
+
+ let mut s = String::new();
+ let x = Some(s.clone());
+ let y = Some(&mut s);
+ println!("{}", x == y.cloned());
+ //~^ ERROR mismatched types
+ //~| HELP use `Option::cloned` to clone the value inside the `Option`
+
+ issue_114925(&mut Issue114925 { x: None }, None);
}