about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authoryonip23 <yoni@tabnine.com>2022-05-12 10:06:15 +0300
committeryonip23 <yoni@tabnine.com>2022-05-12 10:06:15 +0300
commitdc23b5d661f828ddace3ccc65c5a53b0f43c1dd4 (patch)
tree32b8ee03fa90213647da0e3c744a53d5f7735969 /tests
parenta791205e76fe9619f90d4869ab54e4213847b8fe (diff)
downloadrust-dc23b5d661f828ddace3ccc65c5a53b0f43c1dd4.tar.gz
rust-dc23b5d661f828ddace3ccc65c5a53b0f43c1dd4.zip
fix indentation + test
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/rc_clone_in_vec_init/arc.rs10
-rw-r--r--tests/ui/rc_clone_in_vec_init/arc.stderr29
-rw-r--r--tests/ui/rc_clone_in_vec_init/rc.rs10
-rw-r--r--tests/ui/rc_clone_in_vec_init/rc.stderr29
4 files changed, 72 insertions, 6 deletions
diff --git a/tests/ui/rc_clone_in_vec_init/arc.rs b/tests/ui/rc_clone_in_vec_init/arc.rs
index bef2c67a1a5..384060e6eae 100644
--- a/tests/ui/rc_clone_in_vec_init/arc.rs
+++ b/tests/ui/rc_clone_in_vec_init/arc.rs
@@ -7,6 +7,16 @@ fn should_warn_simple_case() {
     let v = vec![Arc::new("x".to_string()); 2];
 }
 
+fn should_warn_simple_case_with_big_indentation() {
+    if true {
+        let k = 1;
+        dbg!(k);
+        if true {
+            let v = vec![Arc::new("x".to_string()); 2];
+        }
+    }
+}
+
 fn should_warn_complex_case() {
     let v = vec![
         std::sync::Arc::new(Mutex::new({
diff --git a/tests/ui/rc_clone_in_vec_init/arc.stderr b/tests/ui/rc_clone_in_vec_init/arc.stderr
index 387580c2431..ce84186c8e3 100644
--- a/tests/ui/rc_clone_in_vec_init/arc.stderr
+++ b/tests/ui/rc_clone_in_vec_init/arc.stderr
@@ -23,7 +23,30 @@ LL ~     };
    |
 
 error: calling `Arc::new` in `vec![elem; len]`
-  --> $DIR/arc.rs:11:13
+  --> $DIR/arc.rs:15:21
+   |
+LL |             let v = vec![Arc::new("x".to_string()); 2];
+   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: each element will point to the same `Arc` instance
+help: consider initializing each `Arc` element individually
+   |
+LL ~             let v = {
+LL +                 let mut v = Vec::with_capacity(2);
+LL +                 (0..2).for_each(|_| v.push(Arc::new("x".to_string())));
+LL +                 v
+LL ~             };
+   |
+help: or if this is intentional, consider extracting the `Arc` initialization to a variable
+   |
+LL ~             let v = {
+LL +                 let data = Arc::new("x".to_string());
+LL +                 vec![data; 2]
+LL ~             };
+   |
+
+error: calling `Arc::new` in `vec![elem; len]`
+  --> $DIR/arc.rs:21:13
    |
 LL |       let v = vec![
    |  _____________^
@@ -53,7 +76,7 @@ LL ~     };
    |
 
 error: calling `Arc::new` in `vec![elem; len]`
-  --> $DIR/arc.rs:20:14
+  --> $DIR/arc.rs:30:14
    |
 LL |       let v1 = vec![
    |  ______________^
@@ -82,5 +105,5 @@ LL +         vec![data; 2]
 LL ~     };
    |
 
-error: aborting due to 3 previous errors
+error: aborting due to 4 previous errors
 
diff --git a/tests/ui/rc_clone_in_vec_init/rc.rs b/tests/ui/rc_clone_in_vec_init/rc.rs
index 79c23cafa2c..0394457fe17 100644
--- a/tests/ui/rc_clone_in_vec_init/rc.rs
+++ b/tests/ui/rc_clone_in_vec_init/rc.rs
@@ -8,6 +8,16 @@ fn should_warn_simple_case() {
     let v = vec![Rc::new("x".to_string()); 2];
 }
 
+fn should_warn_simple_case_with_big_indentation() {
+    if true {
+        let k = 1;
+        dbg!(k);
+        if true {
+            let v = vec![Rc::new("x".to_string()); 2];
+        }
+    }
+}
+
 fn should_warn_complex_case() {
     let v = vec![
         std::rc::Rc::new(Mutex::new({
diff --git a/tests/ui/rc_clone_in_vec_init/rc.stderr b/tests/ui/rc_clone_in_vec_init/rc.stderr
index 4ce53eecbbd..0f5cc0cf98f 100644
--- a/tests/ui/rc_clone_in_vec_init/rc.stderr
+++ b/tests/ui/rc_clone_in_vec_init/rc.stderr
@@ -23,7 +23,30 @@ LL ~     };
    |
 
 error: calling `Rc::new` in `vec![elem; len]`
-  --> $DIR/rc.rs:12:13
+  --> $DIR/rc.rs:16:21
+   |
+LL |             let v = vec![Rc::new("x".to_string()); 2];
+   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: each element will point to the same `Rc` instance
+help: consider initializing each `Rc` element individually
+   |
+LL ~             let v = {
+LL +                 let mut v = Vec::with_capacity(2);
+LL +                 (0..2).for_each(|_| v.push(Rc::new("x".to_string())));
+LL +                 v
+LL ~             };
+   |
+help: or if this is intentional, consider extracting the `Rc` initialization to a variable
+   |
+LL ~             let v = {
+LL +                 let data = Rc::new("x".to_string());
+LL +                 vec![data; 2]
+LL ~             };
+   |
+
+error: calling `Rc::new` in `vec![elem; len]`
+  --> $DIR/rc.rs:22:13
    |
 LL |       let v = vec![
    |  _____________^
@@ -53,7 +76,7 @@ LL ~     };
    |
 
 error: calling `Rc::new` in `vec![elem; len]`
-  --> $DIR/rc.rs:21:14
+  --> $DIR/rc.rs:31:14
    |
 LL |       let v1 = vec![
    |  ______________^
@@ -82,5 +105,5 @@ LL +         vec![data; 2]
 LL ~     };
    |
 
-error: aborting due to 3 previous errors
+error: aborting due to 4 previous errors