Auto merge of #54088 - matthewjasper:use-reason-in-dlle-errors, r=pnkfelix

[NLL] Suggest let binding

Closes #49821

Also adds an alternative to `explain_why_borrow_contains_point` that allows changing error messages based on the reason that will be given. This will also be useful for #51026, #51169 and maybe further changes to does not live long enough messages.
This commit is contained in:
bors 2018-09-14 15:45:02 +00:00
commit 052d24e6c8
15 changed files with 133 additions and 32 deletions

View file

@ -8,6 +8,8 @@ LL | v3.push(&id('x')); // statement 6
...
LL | (v1, v2, v3, /* v4 is above. */ v5).use_ref();
| -- borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
error[E0597]: borrowed value does not live long enough
--> $DIR/borrowck-let-suggestion-suffixes.rs:38:18
@ -19,6 +21,8 @@ LL | v4.push(&id('y'));
...
LL | v4.use_ref();
| -- borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
error[E0597]: borrowed value does not live long enough
--> $DIR/borrowck-let-suggestion-suffixes.rs:49:14
@ -30,6 +34,8 @@ LL | v5.push(&id('z'));
...
LL | (v1, v2, v3, /* v4 is above. */ v5).use_ref();
| -- borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
error: aborting due to 3 previous errors

View file

@ -8,6 +8,8 @@ LL | }
| - temporary value only lives until here
LL | println!("{}", *msg);
| ---- borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
error: aborting due to previous error

View file

@ -8,6 +8,8 @@ LL | ];
...
LL | for &&x in &v {
| -- borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
error: aborting due to previous error

View file

@ -8,6 +8,8 @@ LL | }
| - temporary value only lives until here
LL | }
| - borrow later used here, when `blah` is dropped
|
= note: consider using a `let` binding to create a longer lived value
error: aborting due to previous error

View file

@ -9,6 +9,7 @@ LL | }
LL | y.use_ref();
| - borrow later used here
|
= note: consider using a `let` binding to create a longer lived value
= 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 previous error