summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/clone_on_copy.fixed
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clippy/tests/ui/clone_on_copy.fixed')
-rw-r--r--src/tools/clippy/tests/ui/clone_on_copy.fixed74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/clone_on_copy.fixed b/src/tools/clippy/tests/ui/clone_on_copy.fixed
new file mode 100644
index 000000000..dc0627626
--- /dev/null
+++ b/src/tools/clippy/tests/ui/clone_on_copy.fixed
@@ -0,0 +1,74 @@
+// run-rustfix
+
+#![allow(
+ unused,
+ clippy::redundant_clone,
+ clippy::deref_addrof,
+ clippy::no_effect,
+ clippy::unnecessary_operation,
+ clippy::vec_init_then_push,
+ clippy::toplevel_ref_arg,
+ clippy::needless_borrow
+)]
+
+use std::cell::RefCell;
+use std::rc::{self, Rc};
+use std::sync::{self, Arc};
+
+fn main() {}
+
+fn is_ascii(ch: char) -> bool {
+ ch.is_ascii()
+}
+
+fn clone_on_copy() {
+ 42;
+
+ vec![1].clone(); // ok, not a Copy type
+ Some(vec![1]).clone(); // ok, not a Copy type
+ *(&42);
+
+ let rc = RefCell::new(0);
+ *rc.borrow();
+
+ let x = 0u32;
+ x.rotate_left(1);
+
+ #[derive(Clone, Copy)]
+ struct Foo;
+ impl Foo {
+ fn clone(&self) -> u32 {
+ 0
+ }
+ }
+ Foo.clone(); // ok, this is not the clone trait
+
+ macro_rules! m {
+ ($e:expr) => {{ $e }};
+ }
+ m!(42);
+
+ struct Wrap([u32; 2]);
+ impl core::ops::Deref for Wrap {
+ type Target = [u32; 2];
+ fn deref(&self) -> &[u32; 2] {
+ &self.0
+ }
+ }
+ let x = Wrap([0, 0]);
+ (*x)[0];
+
+ let x = 42;
+ let ref y = x.clone(); // ok, binds by reference
+ let ref mut y = x.clone(); // ok, binds by reference
+
+ // Issue #4348
+ let mut x = 43;
+ let _ = &x.clone(); // ok, getting a ref
+ 'a'.clone().make_ascii_uppercase(); // ok, clone and then mutate
+ is_ascii('z');
+
+ // Issue #5436
+ let mut vec = Vec::new();
+ vec.push(42);
+}