about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-03-26 19:04:25 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-03-27 19:44:08 -0700
commit4e7ec07bb910aef258a848d5fcfa96b3bab7b3b4 (patch)
tree4aff2e0428cfa2423e8b5e20d1f74cd57c4f0be5 /src/test
parent33ef0bad21d6bb646c7c3ab0dbf381ca96c324bf (diff)
downloadrust-4e7ec07bb910aef258a848d5fcfa96b3bab7b3b4.tar.gz
rust-4e7ec07bb910aef258a848d5fcfa96b3bab7b3b4.zip
Account for short-hand field syntax when suggesting borrow
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/deref-suggestion.rs14
-rw-r--r--src/test/ui/deref-suggestion.stderr32
2 files changed, 42 insertions, 4 deletions
diff --git a/src/test/ui/deref-suggestion.rs b/src/test/ui/deref-suggestion.rs
index 83e54b64f47..f156766f528 100644
--- a/src/test/ui/deref-suggestion.rs
+++ b/src/test/ui/deref-suggestion.rs
@@ -15,6 +15,14 @@ fn foo4(u: &u32) {
     //~^ ERROR mismatched types
 }
 
+struct S<'a> {
+    u: &'a u32,
+}
+
+struct R {
+    i: u32,
+}
+
 fn main() {
     let s = String::new();
     let r_s = &s;
@@ -27,4 +35,10 @@ fn main() {
     foo4(&0);
     assert_eq!(3i32, &3i32);
     //~^ ERROR mismatched types
+    let u = 3;
+    let s = S { u };
+    //~^ ERROR mismatched types
+    let i = &4;
+    let r = R { i };
+    //~^ ERROR mismatched types
 }
diff --git a/src/test/ui/deref-suggestion.stderr b/src/test/ui/deref-suggestion.stderr
index 8f061b3416e..bd0ebfac531 100644
--- a/src/test/ui/deref-suggestion.stderr
+++ b/src/test/ui/deref-suggestion.stderr
@@ -23,7 +23,7 @@ LL |     foo3(u);
               found type `&u32`
 
 error[E0308]: mismatched types
-  --> $DIR/deref-suggestion.rs:22:9
+  --> $DIR/deref-suggestion.rs:30:9
    |
 LL |     foo(&"aaa".to_owned());
    |         ^^^^^^^^^^^^^^^^^
@@ -35,7 +35,7 @@ LL |     foo(&"aaa".to_owned());
               found type `&std::string::String`
 
 error[E0308]: mismatched types
-  --> $DIR/deref-suggestion.rs:24:9
+  --> $DIR/deref-suggestion.rs:32:9
    |
 LL |     foo(&mut "aaa".to_owned());
    |         ^^^^^^^^^^^^^^^^^^^^^
@@ -59,7 +59,7 @@ LL |     foo3(borrow!(0));
               found type `&{integer}`
 
 error[E0308]: mismatched types
-  --> $DIR/deref-suggestion.rs:28:5
+  --> $DIR/deref-suggestion.rs:36:5
    |
 LL |     assert_eq!(3i32, &3i32);
    |     ^^^^^^^^^^^^^^^^^^^^^^^^ expected i32, found &i32
@@ -68,6 +68,30 @@ LL |     assert_eq!(3i32, &3i32);
               found type `&i32`
    = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
 
-error: aborting due to 6 previous errors
+error[E0308]: mismatched types
+  --> $DIR/deref-suggestion.rs:39:17
+   |
+LL |     let s = S { u };
+   |                 ^
+   |                 |
+   |                 expected &u32, found integer
+   |                 help: consider borrowing here: `u: &u`
+   |
+   = note: expected type `&u32`
+              found type `{integer}`
+
+error[E0308]: mismatched types
+  --> $DIR/deref-suggestion.rs:42:17
+   |
+LL |     let r = R { i };
+   |                 ^
+   |                 |
+   |                 expected u32, found &{integer}
+   |                 help: consider dereferencing the borrow: `i: *i`
+   |
+   = note: expected type `u32`
+              found type `&{integer}`
+
+error: aborting due to 8 previous errors
 
 For more information about this error, try `rustc --explain E0308`.