]> git.lizzy.rs Git - rust.git/blobdiff - tests/ui/needless_pass_by_value.rs
Auto merge of #4478 - tsurai:master, r=flip1995
[rust.git] / tests / ui / needless_pass_by_value.rs
index 322df0b879800a0d2eaf351da01326d8f04aeae4..f031dd105c25445568c5a729f2bbf6e28156f2e9 100644 (file)
@@ -1,7 +1,14 @@
-#![warn(needless_pass_by_value)]
-#![allow(dead_code, single_match, if_let_redundant_pattern_matching, many_single_char_names, option_option)]
+#![warn(clippy::needless_pass_by_value)]
+#![allow(
+    dead_code,
+    clippy::single_match,
+    clippy::redundant_pattern_matching,
+    clippy::many_single_char_names,
+    clippy::option_option
+)]
 
 use std::borrow::Borrow;
+use std::collections::HashSet;
 use std::convert::AsRef;
 
 // `v` should be warned
@@ -80,24 +87,19 @@ fn issue_2114(s: String, t: String, u: Vec<i32>, v: Vec<i32>) {
 
 impl<T: Serialize, U> S<T, U> {
     fn foo(
-        self, // taking `self` by value is always allowed
+        self,
+        // taking `self` by value is always allowed
         s: String,
         t: String,
     ) -> usize {
         s.len() + t.capacity()
     }
 
-    fn bar(
-        _t: T, // Ok, since `&T: Serialize` too
+    fn bar(_t: T, // Ok, since `&T: Serialize` too
     ) {
     }
 
-    fn baz(
-        &self,
-        _u: U,
-        _s: Self,
-    ) {
-    }
+    fn baz(&self, _u: U, _s: Self) {}
 }
 
 trait FalsePositive {
@@ -108,7 +110,9 @@ fn visit_string(s: String) {
 }
 
 // shouldn't warn on extern funcs
-extern "C" fn ext(x: String) -> usize { x.len() }
+extern "C" fn ext(x: String) -> usize {
+    x.len()
+}
 
 // whitelist RangeArgument
 fn range<T: ::std::ops::RangeBounds<usize>>(range: T) {
@@ -132,4 +136,24 @@ fn test_destructure_copy(x: CopyWrapper, y: CopyWrapper, z: CopyWrapper) {
     println!("{}", t);
 }
 
-fn main() {}
+// The following 3 lines should not cause an ICE. See #2831
+trait Bar<'a, A> {}
+impl<'b, T> Bar<'b, T> for T {}
+fn some_fun<'b, S: Bar<'b, ()>>(_item: S) {}
+
+// Also this should not cause an ICE. See #2831
+trait Club<'a, A> {}
+impl<T> Club<'static, T> for T {}
+fn more_fun(_item: impl Club<'static, i32>) {}
+
+fn is_sync<T>(_: T)
+where
+    T: Sync,
+{
+}
+
+fn main() {
+    // This should not cause an ICE either
+    // https://github.com/rust-lang/rust-clippy/issues/3144
+    is_sync(HashSet::<usize>::new());
+}