about summary refs log tree commit diff
diff options
context:
space:
mode:
authorlengyijun <sjtu5140809011@gmail.com>2021-09-17 11:48:21 +0800
committerlengyijun <sjtu5140809011@gmail.com>2021-09-22 16:04:04 +0800
commitb68325ecf6dfd87d2dda5c6b3f3d3b0bcc315d3e (patch)
tree54c2923ffee4dbaaabe09c244b7c5d21e06ac00d
parent59cd77710d73ba65d56f0c5c167ef503174a4826 (diff)
downloadrust-b68325ecf6dfd87d2dda5c6b3f3d3b0bcc315d3e.tar.gz
rust-b68325ecf6dfd87d2dda5c6b3f3d3b0bcc315d3e.zip
add #4546 test
-rw-r--r--clippy_lints/src/methods/mod.rs2
-rw-r--r--tests/ui/wrong_self_convention2.rs18
2 files changed, 20 insertions, 0 deletions
diff --git a/clippy_lints/src/methods/mod.rs b/clippy_lints/src/methods/mod.rs
index e89b2d295b9..486208f0fad 100644
--- a/clippy_lints/src/methods/mod.rs
+++ b/clippy_lints/src/methods/mod.rs
@@ -264,6 +264,8 @@ declare_clippy_lint! {
     /// The method signature is controlled by the trait and often `&self` is required for all types that implement the trait
     /// (see e.g. the `std::string::ToString` trait).
     ///
+    /// Clippy allows `Pin<&Self>` and `Pin<&mut Self>` if `&self` and `&mut self` is required.
+    ///
     /// Please find more info here:
     /// https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv
     ///
diff --git a/tests/ui/wrong_self_convention2.rs b/tests/ui/wrong_self_convention2.rs
index dd3e842c925..0d827c1feb3 100644
--- a/tests/ui/wrong_self_convention2.rs
+++ b/tests/ui/wrong_self_convention2.rs
@@ -87,3 +87,21 @@ mod issue3414 {
         }
     }
 }
+
+// don't trigger
+mod issue4546 {
+    use std::pin::Pin;
+
+    struct S;
+    impl S {
+        pub fn as_mut(self: Pin<&mut Self>) {}
+
+        pub fn as_other_thingy(self: Pin<&Self>) {}
+
+        pub fn is_other_thingy(self: Pin<&Self>) {}
+
+        pub fn to_mut(self: Pin<&mut Self>) {}
+
+        pub fn to_other_thingy(self: Pin<&Self>) {}
+    }
+}