Use span of the closure args in free region errors

This commit is contained in:
Matthew Jasper 2018-08-05 14:33:38 +01:00
parent ddcf17e1ed
commit f72b8a44c5
6 changed files with 91 additions and 55 deletions

View file

@ -8,9 +8,8 @@ error: unsatisfied lifetime constraints
--> $DIR/E0621-does-not-trigger-for-closures.rs:25:26
|
LL | invoke(&x, |a, b| if a > b { a } else { b }); //~ ERROR E0495
| ----------^^^^^-----------------
| | | |
| | | requires that `'1` must outlive `'2`
| ------ ^^^^^ requires that `'1` must outlive `'2`
| | |
| | has type `&'1 i32`
| lifetime `'2` appears in return type

View file

@ -1,17 +1,15 @@
error: unsatisfied lifetime constraints
--> $DIR/issue-40510-1.rs:18:9
|
LL | || {
| _____-
| |_____|
| ||
LL | || &mut x
| || ^^^^^^ return requires that `'1` must outlive `'2`
LL | || };
| || -
| ||_____|
| |______lifetime `'1` represents the closure body
| lifetime `'2` appears in return type
LL | || {
| --
| |
| lifetime `'1` represents this closure's body
| lifetime `'2` appears in return type
LL | &mut x
| ^^^^^^ return requires that `'1` must outlive `'2`
|
= note: closure implements `FnMut`, so references to captured variables can't escape the closure
error: aborting due to previous error

View file

@ -1,20 +1,17 @@
error: unsatisfied lifetime constraints
--> $DIR/issue-40510-3.rs:18:9
|
LL | || {
| _____-
| |_____|
| ||
LL | || || {
| ||_________^
LL | ||| x.push(())
LL | ||| }
| |||_________^ requires that `'1` must outlive `'2`
LL | || };
| || -
| ||_____|
| |______lifetime `'1` represents the closure body
| lifetime `'2` appears in return type
LL | || {
| --
| |
| lifetime `'1` represents this closure's body
| lifetime `'2` appears in return type
LL | / || {
LL | | x.push(())
LL | | }
| |_________^ requires that `'1` must outlive `'2`
|
= note: closure implements `FnMut`, so references to captured variables can't escape the closure
error: aborting due to previous error

View file

@ -1,20 +1,17 @@
error: unsatisfied lifetime constraints
--> $DIR/issue-49824.rs:22:9
|
LL | || {
| _____-
| |_____|
| ||
LL | || || {
| ||_________^
LL | ||| let _y = &mut x;
LL | ||| }
| |||_________^ requires that `'1` must outlive `'2`
LL | || };
| || -
| ||_____|
| |______lifetime `'1` represents the closure body
| lifetime `'2` appears in return type
LL | || {
| --
| |
| lifetime `'1` represents this closure's body
| lifetime `'2` appears in return type
LL | / || {
LL | | let _y = &mut x;
LL | | }
| |_________^ requires that `'1` must outlive `'2`
|
= note: closure implements `FnMut`, so references to captured variables can't escape the closure
error: aborting due to previous error

View file

@ -2,11 +2,12 @@ error: unsatisfied lifetime constraints
--> $DIR/issue-48238.rs:21:13
|
LL | move || use_val(&orig); //~ ERROR
| --------^^^^^^^^^^^^^^
| | |
| | argument requires that `'1` must outlive `'2`
| lifetime `'1` represents the closure body
| ------- ^^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
| |
| lifetime `'1` represents this closure's body
| lifetime `'2` appears in return type
|
= note: closure implements `Fn`, so references to captured variables can't escape the closure
error: aborting due to previous error