about summary refs log tree commit diff
path: root/src/tools/clippy/tests/ui/useless_asref.fixed
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clippy/tests/ui/useless_asref.fixed')
-rw-r--r--src/tools/clippy/tests/ui/useless_asref.fixed64
1 files changed, 57 insertions, 7 deletions
diff --git a/src/tools/clippy/tests/ui/useless_asref.fixed b/src/tools/clippy/tests/ui/useless_asref.fixed
index ddbb9255b46..8c1f948fb58 100644
--- a/src/tools/clippy/tests/ui/useless_asref.fixed
+++ b/src/tools/clippy/tests/ui/useless_asref.fixed
@@ -8,6 +8,7 @@
 )]
 
 use std::fmt::Debug;
+use std::ops::Deref;
 use std::rc::{Rc, Weak as RcWeak};
 use std::sync::{Arc, Weak as ArcWeak};
 
@@ -48,14 +49,18 @@ fn not_ok() {
     {
         let rslice: &[i32] = &*mrslice;
         foo_rstr(rstr);
+        //~^ useless_asref
         foo_rstr(rstr);
         foo_rslice(rslice);
+        //~^ useless_asref
         foo_rslice(rslice);
     }
     {
         foo_mrslice(mrslice);
+        //~^ useless_asref
         foo_mrslice(mrslice);
         foo_rslice(mrslice);
+        //~^ useless_asref
         foo_rslice(mrslice);
     }
 
@@ -63,19 +68,24 @@ fn not_ok() {
         let rrrrrstr = &&&&rstr;
         let rrrrrslice = &&&&&*mrslice;
         foo_rslice(rrrrrslice);
+        //~^ useless_asref
         foo_rslice(rrrrrslice);
         foo_rstr(rrrrrstr);
+        //~^ useless_asref
         foo_rstr(rrrrrstr);
     }
     {
         let mrrrrrslice = &mut &mut &mut &mut mrslice;
         foo_mrslice(mrrrrrslice);
+        //~^ useless_asref
         foo_mrslice(mrrrrrslice);
         foo_rslice(mrrrrrslice);
+        //~^ useless_asref
         foo_rslice(mrrrrrslice);
     }
     #[allow(unused_parens, clippy::double_parens, clippy::needless_borrow)]
     foo_rrrrmr((&&&&MoreRef));
+    //~^ useless_asref
 
     generic_not_ok(mrslice);
     generic_ok(mrslice);
@@ -126,8 +136,10 @@ fn foo_rt<T: Debug + ?Sized>(t: &T) {
 
 fn generic_not_ok<T: AsMut<T> + AsRef<T> + Debug + ?Sized>(mrt: &mut T) {
     foo_mrt(mrt);
+    //~^ useless_asref
     foo_mrt(mrt);
     foo_rt(mrt);
+    //~^ useless_asref
     foo_rt(mrt);
 }
 
@@ -139,11 +151,13 @@ fn generic_ok<U: AsMut<T> + AsRef<T> + ?Sized, T: Debug + ?Sized>(mru: &mut U) {
 fn foo() {
     let x = Some(String::new());
     let z = x.clone();
-    //~^ ERROR: this call to `as_ref.map(...)` does nothing
+    //~^ useless_asref
+
     let z = x.clone();
-    //~^ ERROR: this call to `as_ref.map(...)` does nothing
+    //~^ useless_asref
+
     let z = x.clone();
-    //~^ ERROR: this call to `as_ref.map(...)` does nothing
+    //~^ useless_asref
 }
 
 mod issue12135 {
@@ -167,16 +181,18 @@ mod issue12135 {
 
     pub fn f(x: &Struct) -> Option<Foo> {
         x.field.clone();
-        //~^ ERROR: this call to `as_ref.map(...)` does nothing
+        //~^ useless_asref
+
         x.field.clone();
-        //~^ ERROR: this call to `as_ref.map(...)` does nothing
+        //~^ useless_asref
+
         x.field.clone();
-        //~^ ERROR: this call to `as_ref.map(...)` does nothing
+        //~^ useless_asref
 
         // https://github.com/rust-lang/rust-clippy/pull/12136#discussion_r1451565223
         #[allow(clippy::clone_on_copy)]
         Some(1).clone();
-        //~^ ERROR: this call to `as_ref.map(...)` does nothing
+        //~^ useless_asref
 
         x.field.as_ref().map(|v| v.method().clone())
     }
@@ -198,6 +214,40 @@ fn issue_12528() {
     let _ = opt.as_ref().map(RcWeak::clone);
 }
 
+fn issue_14088() {
+    let s = Some("foo");
+    let _: Option<&str> = s.as_ref().map(|x| x.as_ref());
+}
+
+pub struct Wrap<T> {
+    inner: T,
+}
+
+impl<T> Deref for Wrap<T> {
+    type Target = T;
+
+    fn deref(&self) -> &Self::Target {
+        &self.inner
+    }
+}
+
+struct NonCloneableError;
+
+pub struct Issue12357 {
+    current: Option<Wrap<Arc<u32>>>,
+}
+
+impl Issue12357 {
+    fn f(&self) -> Option<Arc<u32>> {
+        self.current.as_ref().map(|p| Arc::clone(p))
+    }
+
+    fn g(&self) {
+        let result: Result<String, NonCloneableError> = Ok("Hello".to_string());
+        let cloned = result.as_ref().map(|s| s.clone());
+    }
+}
+
 fn main() {
     not_ok();
     ok();