summaryrefslogtreecommitdiffstats
path: root/tests/ui/nll/move-errors.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/nll/move-errors.rs')
-rw-r--r--tests/ui/nll/move-errors.rs117
1 files changed, 117 insertions, 0 deletions
diff --git a/tests/ui/nll/move-errors.rs b/tests/ui/nll/move-errors.rs
new file mode 100644
index 000000000..e0fcd6250
--- /dev/null
+++ b/tests/ui/nll/move-errors.rs
@@ -0,0 +1,117 @@
+struct A(String);
+struct C(D);
+
+fn suggest_remove_deref() {
+ let a = &A("".to_string());
+ let b = *a;
+ //~^ ERROR
+}
+
+fn suggest_borrow() {
+ let a = [A("".to_string())];
+ let b = a[0];
+ //~^ ERROR
+}
+
+fn suggest_borrow2() {
+ let mut a = A("".to_string());
+ let r = &&mut a;
+ let s = **r;
+ //~^ ERROR
+}
+
+fn suggest_borrow3() {
+ use std::rc::Rc;
+ let mut a = A("".to_string());
+ let r = Rc::new(a);
+ let s = *r;
+ //~^ ERROR
+}
+
+fn suggest_borrow4() {
+ let a = [A("".to_string())][0];
+ //~^ ERROR
+}
+
+fn suggest_borrow5() {
+ let a = &A("".to_string());
+ let A(s) = *a;
+ //~^ ERROR
+}
+
+fn suggest_ref() {
+ let c = C(D(String::new()));
+ let C(D(s)) = c;
+ //~^ ERROR
+}
+
+fn suggest_nothing() {
+ let a = &A("".to_string());
+ let b;
+ b = *a;
+ //~^ ERROR
+}
+
+enum B {
+ V(String),
+ U(D),
+}
+
+struct D(String);
+
+impl Drop for D {
+ fn drop(&mut self) {}
+}
+
+struct F(String, String);
+
+impl Drop for F {
+ fn drop(&mut self) {}
+}
+
+fn probably_suggest_borrow() {
+ let x = [B::V(String::new())];
+ match x[0] {
+ //~^ ERROR
+ B::U(d) => (),
+ B::V(s) => (),
+ }
+}
+
+fn have_to_suggest_ref() {
+ let x = B::V(String::new());
+ match x {
+ //~^ ERROR
+ B::V(s) => drop(s),
+ B::U(D(s)) => (),
+ };
+}
+
+fn two_separate_errors() {
+ let x = (D(String::new()), &String::new());
+ match x {
+ //~^ ERROR
+ //~^^ ERROR
+ (D(s), &t) => (),
+ _ => (),
+ }
+}
+
+fn have_to_suggest_double_ref() {
+ let x = F(String::new(), String::new());
+ match x {
+ //~^ ERROR
+ F(s, mut t) => (),
+ _ => (),
+ }
+}
+
+fn double_binding(x: &Result<String, String>) {
+ match *x {
+ //~^ ERROR
+ Ok(s) | Err(s) => (),
+ }
+}
+
+fn main() {
+}