Account for short-hand field syntax when suggesting borrow
This commit is contained in:
parent
33ef0bad21
commit
4e7ec07bb9
3 changed files with 82 additions and 12 deletions
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue