1
Fork 0

Fix tests

This commit is contained in:
Wesley Wiser 2018-09-06 22:57:05 -04:00
parent 5390cf32f7
commit b1211e8703
31 changed files with 194 additions and 91 deletions

View file

@ -34,7 +34,7 @@ fn main() {
// | '_#4r | Local | ['_#4r] // | '_#4r | Local | ['_#4r]
// | // |
// | Inferred Region Values // | Inferred Region Values
// | '_#0r | U0 | {bb0[0..=1], '_#0r} // | '_#0r | U0 | {bb0[0..=1], '_#0r, '_#1r, '_#2r, '_#3r, '_#4r}
// | '_#1r | U0 | {bb0[0..=1], '_#1r} // | '_#1r | U0 | {bb0[0..=1], '_#1r}
// | '_#2r | U0 | {bb0[0..=1], '_#2r} // | '_#2r | U0 | {bb0[0..=1], '_#2r}
// | '_#3r | U0 | {bb0[0..=1], '_#3r} // | '_#3r | U0 | {bb0[0..=1], '_#3r}

View file

@ -6,5 +6,15 @@ LL | fn baz<'a,'b>(x: &'a u32) -> &'static u32 {
LL | bar(foo, x) //[transmute]~ ERROR E0495 LL | bar(foo, x) //[transmute]~ ERROR E0495
| ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static` | ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
error: aborting due to previous error error: unsatisfied lifetime constraints
--> $DIR/project-fn-ret-contravariant.rs:48:4
|
LL | fn baz<'a,'b>(x: &'a u32) -> &'static u32 {
| -- -- lifetime `'b` defined here
| |
| lifetime `'a` defined here
LL | bar(foo, x) //[transmute]~ ERROR E0495
| ^^^^^^^^^^^ requires that `'a` must outlive `'b`
error: aborting due to 2 previous errors

View file

@ -7,5 +7,16 @@ LL | fn baz<'a,'b>(x: Type<'a>) -> Type<'static> {
LL | bar(foo, x) //[transmute]~ ERROR E0495 LL | bar(foo, x) //[transmute]~ ERROR E0495
| ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static` | ^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
error: aborting due to previous error error: unsatisfied lifetime constraints
--> $DIR/project-fn-ret-invariant.rs:58:13
|
LL | fn baz<'a,'b>(x: Type<'a>) -> Type<'static> {
| -- -- lifetime `'b` defined here
| |
| lifetime `'a` defined here
...
LL | bar(foo, x) //[transmute]~ ERROR E0495
| ^ requires that `'a` must outlive `'b`
error: aborting due to 2 previous errors

View file

@ -4,7 +4,7 @@ error: unsatisfied lifetime constraints
LL | fn iter_values_anon(&self) -> impl Iterator<Item=u32> { LL | fn iter_values_anon(&self) -> impl Iterator<Item=u32> {
| - let's call the lifetime of this reference `'1` | - let's call the lifetime of this reference `'1`
LL | self.x.iter().map(|a| a.0) LL | self.x.iter().map(|a| a.0)
| ^^^^^^^^^^^^^ requires that `'1` must outlive `'static` | ^^^^^^ cast requires that `'1` must outlive `'static`
error: unsatisfied lifetime constraints error: unsatisfied lifetime constraints
--> $DIR/static-return-lifetime-infered.rs:21:9 --> $DIR/static-return-lifetime-infered.rs:21:9
@ -12,7 +12,7 @@ error: unsatisfied lifetime constraints
LL | fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> { LL | fn iter_values<'a>(&'a self) -> impl Iterator<Item=u32> {
| -- lifetime `'a` defined here | -- lifetime `'a` defined here
LL | self.x.iter().map(|a| a.0) LL | self.x.iter().map(|a| a.0)
| ^^^^^^^^^^^^^ requires that `'a` must outlive `'static` | ^^^^^^ cast requires that `'a` must outlive `'static`
error: aborting due to 2 previous errors error: aborting due to 2 previous errors

View file

@ -43,7 +43,8 @@ fn demand_y<'x, 'y>(_cell_x: &Cell<&'x u32>, _cell_y: &Cell<&'y u32>, _y: &'y u3
#[rustc_regions] #[rustc_regions]
fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { establish_relationships(&cell_a, &cell_b, |_outlives, x, y| {
//~^ ERROR //~^ ERROR borrowed data escapes outside of function
//~| ERROR unsatisfied lifetime constraints
// Only works if 'x: 'y: // Only works if 'x: 'y:
demand_y(x, y, x.get()) demand_y(x, y, x.get())

View file

@ -3,7 +3,8 @@ note: External requirements
| |
LL | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { LL | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| {
| _______________________________________________^ | _______________________________________________^
LL | | //~^ ERROR LL | | //~^ ERROR borrowed data escapes outside of function
LL | | //~| ERROR unsatisfied lifetime constraints
LL | | LL | |
LL | | // Only works if 'x: 'y: LL | | // Only works if 'x: 'y:
LL | | demand_y(x, y, x.get()) LL | | demand_y(x, y, x.get())
@ -22,8 +23,8 @@ note: No external requirements
| |
LL | / fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { LL | / fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
LL | | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { LL | | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| {
LL | | //~^ ERROR LL | | //~^ ERROR borrowed data escapes outside of function
LL | | LL | | //~| ERROR unsatisfied lifetime constraints
... | ... |
LL | | }); LL | | });
LL | | } LL | | }
@ -37,12 +38,23 @@ error: borrowed data escapes outside of function
LL | fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { LL | fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
| ------ `cell_a` is a reference that is only valid in the function body | ------ `cell_a` is a reference that is only valid in the function body
LL | / establish_relationships(&cell_a, &cell_b, |_outlives, x, y| { LL | / establish_relationships(&cell_a, &cell_b, |_outlives, x, y| {
LL | | //~^ ERROR LL | | //~^ ERROR borrowed data escapes outside of function
LL | | //~| ERROR unsatisfied lifetime constraints
LL | | LL | |
LL | | // Only works if 'x: 'y: LL | | // Only works if 'x: 'y:
LL | | demand_y(x, y, x.get()) LL | | demand_y(x, y, x.get())
LL | | }); LL | | });
| |______^ `cell_a` escapes the function body here | |______^ `cell_a` escapes the function body here
error: aborting due to previous error error: unsatisfied lifetime constraints
--> $DIR/propagate-approximated-shorter-to-static-no-bound.rs:45:29
|
LL | fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
| -- -- lifetime `'b` defined here
| |
| lifetime `'a` defined here
LL | establish_relationships(&cell_a, &cell_b, |_outlives, x, y| {
| ^^^^^^^ requires that `'a` must outlive `'b`
error: aborting due to 2 previous errors

View file

@ -46,7 +46,8 @@ fn demand_y<'x, 'y>(_cell_x: &Cell<&'x u32>, _cell_y: &Cell<&'y u32>, _y: &'y u3
#[rustc_regions] #[rustc_regions]
fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| { establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| {
//~^ ERROR //~^ ERROR borrowed data escapes outside of function
//~| ERROR unsatisfied lifetime constraints
// Only works if 'x: 'y: // Only works if 'x: 'y:
demand_y(x, y, x.get()) demand_y(x, y, x.get())
}); });

View file

@ -3,7 +3,8 @@ note: External requirements
| |
LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| { LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| {
| _______________________________________________^ | _______________________________________________^
LL | | //~^ ERROR LL | | //~^ ERROR borrowed data escapes outside of function
LL | | //~| ERROR unsatisfied lifetime constraints
LL | | // Only works if 'x: 'y: LL | | // Only works if 'x: 'y:
LL | | demand_y(x, y, x.get()) LL | | demand_y(x, y, x.get())
LL | | }); LL | | });
@ -21,9 +22,9 @@ note: No external requirements
| |
LL | / fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { LL | / fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
LL | | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| { LL | | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| {
LL | | //~^ ERROR LL | | //~^ ERROR borrowed data escapes outside of function
LL | | // Only works if 'x: 'y: LL | | //~| ERROR unsatisfied lifetime constraints
LL | | demand_y(x, y, x.get()) ... |
LL | | }); LL | | });
LL | | } LL | | }
| |_^ | |_^
@ -36,11 +37,22 @@ error: borrowed data escapes outside of function
LL | fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) { LL | fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
| ------ `cell_a` is a reference that is only valid in the function body | ------ `cell_a` is a reference that is only valid in the function body
LL | / establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| { LL | / establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| {
LL | | //~^ ERROR LL | | //~^ ERROR borrowed data escapes outside of function
LL | | //~| ERROR unsatisfied lifetime constraints
LL | | // Only works if 'x: 'y: LL | | // Only works if 'x: 'y:
LL | | demand_y(x, y, x.get()) LL | | demand_y(x, y, x.get())
LL | | }); LL | | });
| |______^ `cell_a` escapes the function body here | |______^ `cell_a` escapes the function body here
error: aborting due to previous error error: unsatisfied lifetime constraints
--> $DIR/propagate-approximated-shorter-to-static-wrong-bound.rs:48:29
|
LL | fn supply<'a, 'b>(cell_a: Cell<&'a u32>, cell_b: Cell<&'b u32>) {
| -- -- lifetime `'b` defined here
| |
| lifetime `'a` defined here
LL | establish_relationships(&cell_a, &cell_b, |_outlives1, _outlives2, x, y| {
| ^^^^^^^ requires that `'a` must outlive `'b`
error: aborting due to 2 previous errors

View file

@ -17,7 +17,7 @@ LL | | });
i32, i32,
extern "rust-call" fn((T,)) extern "rust-call" fn((T,))
] ]
= note: number of external vids: 3 = note: number of external vids: 2
= note: where T: '_#1r = note: where T: '_#1r
note: No external requirements note: No external requirements

View file

@ -44,8 +44,8 @@ fn bar<'a>(x: &'a u32) -> &'static u32 {
// The MIR type checker must therefore relate `'?0` to `'?1` and `'?2` // The MIR type checker must therefore relate `'?0` to `'?1` and `'?2`
// as part of checking the `ReifyFnPointer`. // as part of checking the `ReifyFnPointer`.
let f: fn(_) -> _ = foo; let f: fn(_) -> _ = foo;
//~^ ERROR unsatisfied lifetime constraints
f(x) f(x)
//~^ ERROR
} }
fn main() {} fn main() {}

View file

@ -1,11 +1,11 @@
error: unsatisfied lifetime constraints error: unsatisfied lifetime constraints
--> $DIR/mir_check_cast_reify.rs:47:5 --> $DIR/mir_check_cast_reify.rs:46:25
| |
LL | fn bar<'a>(x: &'a u32) -> &'static u32 { LL | fn bar<'a>(x: &'a u32) -> &'static u32 {
| -- lifetime `'a` defined here | -- lifetime `'a` defined here
... ...
LL | f(x) LL | let f: fn(_) -> _ = foo;
| ^^^^ returning this value requires that `'a` must outlive `'static` | ^^^ cast requires that `'a` must outlive `'static`
error: aborting due to previous error error: aborting due to previous error

View file

@ -16,8 +16,8 @@ fn bar<'a>(input: &'a u32, f: fn(&'a u32) -> &'a u32) -> &'static u32 {
// Here the NLL checker must relate the types in `f` to the types // Here the NLL checker must relate the types in `f` to the types
// in `g`. These are related via the `UnsafeFnPointer` cast. // in `g`. These are related via the `UnsafeFnPointer` cast.
let g: unsafe fn(_) -> _ = f; let g: unsafe fn(_) -> _ = f;
//~^ ERROR unsatisfied lifetime constraints
unsafe { g(input) } unsafe { g(input) }
//~^ ERROR
} }
fn main() {} fn main() {}

View file

@ -1,11 +1,11 @@
error: unsatisfied lifetime constraints error: unsatisfied lifetime constraints
--> $DIR/mir_check_cast_unsafe_fn.rs:19:14 --> $DIR/mir_check_cast_unsafe_fn.rs:18:32
| |
LL | fn bar<'a>(input: &'a u32, f: fn(&'a u32) -> &'a u32) -> &'static u32 { LL | fn bar<'a>(input: &'a u32, f: fn(&'a u32) -> &'a u32) -> &'static u32 {
| -- lifetime `'a` defined here | -- lifetime `'a` defined here
... ...
LL | unsafe { g(input) } LL | let g: unsafe fn(_) -> _ = f;
| ^^^^^^^^ returning this value requires that `'a` must outlive `'static` | ^ cast requires that `'a` must outlive `'static`
error: aborting due to previous error error: aborting due to previous error

View file

@ -4,7 +4,7 @@ error: unsatisfied lifetime constraints
LL | fn bar<'a>(x: &'a u32) -> &'static dyn Debug { LL | fn bar<'a>(x: &'a u32) -> &'static dyn Debug {
| -- lifetime `'a` defined here | -- lifetime `'a` defined here
LL | x LL | x
| ^ returning this value requires that `'a` must outlive `'static` | ^ cast requires that `'a` must outlive `'static`
error: aborting due to previous error error: aborting due to previous error

View file

@ -10,7 +10,7 @@ LL | with_signature(x, |mut y| Box::new(y.next()))
i32, i32,
extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#2r)> extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#2r)>
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where <T as std::iter::Iterator>::Item: '_#2r = note: where <T as std::iter::Iterator>::Item: '_#2r
note: No external requirements note: No external requirements
@ -50,7 +50,7 @@ LL | with_signature(x, |mut y| Box::new(y.next()))
i32, i32,
extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#2r)> extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#2r)>
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where <T as std::iter::Iterator>::Item: '_#2r = note: where <T as std::iter::Iterator>::Item: '_#2r
note: No external requirements note: No external requirements
@ -82,7 +82,7 @@ LL | with_signature(x, |mut y| Box::new(y.next()))
i32, i32,
extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#3r)> extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#3r)>
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where <T as std::iter::Iterator>::Item: '_#3r = note: where <T as std::iter::Iterator>::Item: '_#3r
note: No external requirements note: No external requirements
@ -124,7 +124,7 @@ LL | with_signature(x, |mut y| Box::new(y.next()))
i32, i32,
extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#3r)> extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn Anything + '_#3r)>
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where <T as std::iter::Iterator>::Item: '_#3r = note: where <T as std::iter::Iterator>::Item: '_#3r
note: No external requirements note: No external requirements

View file

@ -10,7 +10,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where T: '_#2r = note: where T: '_#2r
= note: where '_#1r: '_#2r = note: where '_#1r: '_#2r
@ -63,7 +63,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where T: '_#3r = note: where T: '_#3r
= note: where '_#2r: '_#3r = note: where '_#2r: '_#3r
@ -117,7 +117,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where T: '_#3r = note: where T: '_#3r
= note: where '_#2r: '_#3r = note: where '_#2r: '_#3r
@ -171,7 +171,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where T: '_#3r = note: where T: '_#3r
= note: where '_#2r: '_#3r = note: where '_#2r: '_#3r

View file

@ -10,7 +10,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where '_#1r: '_#2r = note: where '_#1r: '_#2r
note: No external requirements note: No external requirements
@ -54,7 +54,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where '_#2r: '_#3r = note: where '_#2r: '_#3r
note: No external requirements note: No external requirements
@ -99,7 +99,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where '_#2r: '_#3r = note: where '_#2r: '_#3r
note: No external requirements note: No external requirements
@ -144,7 +144,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where '_#2r: '_#3r = note: where '_#2r: '_#3r
note: No external requirements note: No external requirements
@ -177,7 +177,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where '_#1r: '_#2r = note: where '_#1r: '_#2r
note: No external requirements note: No external requirements

View file

@ -46,7 +46,7 @@ where
T: Anything<'b, 'c>, T: Anything<'b, 'c>,
{ {
with_signature(cell, t, |cell, t| require(cell, t)); with_signature(cell, t, |cell, t| require(cell, t));
//~^ ERROR associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough //~^ ERROR associated type `<T as Anything<'_#5r, '_#6r>>::AssocType` may not live long enough
} }
#[rustc_regions] #[rustc_regions]
@ -56,7 +56,7 @@ where
'a: 'a, 'a: 'a,
{ {
with_signature(cell, t, |cell, t| require(cell, t)); with_signature(cell, t, |cell, t| require(cell, t));
//~^ ERROR associated type `<T as Anything<'_#7r, '_#8r>>::AssocType` may not live long enough //~^ ERROR associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough
} }
#[rustc_regions] #[rustc_regions]
@ -76,7 +76,7 @@ where
// can do better here with a more involved verification step. // can do better here with a more involved verification step.
with_signature(cell, t, |cell, t| require(cell, t)); with_signature(cell, t, |cell, t| require(cell, t));
//~^ ERROR associated type `<T as Anything<'_#7r, '_#8r>>::AssocType` may not live long enough //~^ ERROR associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough
} }
#[rustc_regions] #[rustc_regions]
@ -103,7 +103,7 @@ where
T: Anything<'b, 'b>, T: Anything<'b, 'b>,
{ {
with_signature(cell, t, |cell, t| require(cell, t)); with_signature(cell, t, |cell, t| require(cell, t));
//~^ ERROR //~^ ERROR unsatisfied lifetime constraints
} }
#[rustc_regions] #[rustc_regions]

View file

@ -11,7 +11,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 6 = note: number of external vids: 5
= note: where <T as Anything<ReClosureBound('_#1r), ReClosureBound('_#2r)>>::AssocType: '_#3r = note: where <T as Anything<ReClosureBound('_#1r), ReClosureBound('_#2r)>>::AssocType: '_#3r
note: No external requirements note: No external requirements
@ -22,7 +22,7 @@ LL | | where
LL | | T: Anything<'b, 'c>, LL | | T: Anything<'b, 'c>,
LL | | { LL | | {
LL | | with_signature(cell, t, |cell, t| require(cell, t)); LL | | with_signature(cell, t, |cell, t| require(cell, t));
LL | | //~^ ERROR associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough LL | | //~^ ERROR associated type `<T as Anything<'_#5r, '_#6r>>::AssocType` may not live long enough
LL | | } LL | | }
| |_^ | |_^
| |
@ -32,13 +32,13 @@ LL | | }
T T
] ]
error[E0309]: the associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough error[E0309]: the associated type `<T as Anything<'_#5r, '_#6r>>::AssocType` may not live long enough
--> $DIR/projection-two-region-trait-bound-closure.rs:48:29 --> $DIR/projection-two-region-trait-bound-closure.rs:48:29
| |
LL | with_signature(cell, t, |cell, t| require(cell, t)); LL | with_signature(cell, t, |cell, t| require(cell, t));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
= help: consider adding an explicit lifetime bound `<T as Anything<'_#6r, '_#7r>>::AssocType: ReFree(DefId(0/0:8 ~ projection_two_region_trait_bound_closure[317d]::no_relationships_late[0]), BrNamed(crate0:DefIndex(1:18), 'a))`... = help: consider adding an explicit lifetime bound `<T as Anything<'_#5r, '_#6r>>::AssocType: ReFree(DefId(0/0:8 ~ projection_two_region_trait_bound_closure[317d]::no_relationships_late[0]), BrNamed(crate0:DefIndex(1:18), 'a))`...
note: External requirements note: External requirements
--> $DIR/projection-two-region-trait-bound-closure.rs:58:29 --> $DIR/projection-two-region-trait-bound-closure.rs:58:29
@ -54,7 +54,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T))
] ]
= note: number of external vids: 6 = note: number of external vids: 5
= note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r = note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r
note: No external requirements note: No external requirements
@ -65,7 +65,7 @@ LL | | where
LL | | T: Anything<'b, 'c>, LL | | T: Anything<'b, 'c>,
LL | | 'a: 'a, LL | | 'a: 'a,
... | ... |
LL | | //~^ ERROR associated type `<T as Anything<'_#7r, '_#8r>>::AssocType` may not live long enough LL | | //~^ ERROR associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough
LL | | } LL | | }
| |_^ | |_^
| |
@ -76,13 +76,13 @@ LL | | }
T T
] ]
error[E0309]: the associated type `<T as Anything<'_#7r, '_#8r>>::AssocType` may not live long enough error[E0309]: the associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough
--> $DIR/projection-two-region-trait-bound-closure.rs:58:29 --> $DIR/projection-two-region-trait-bound-closure.rs:58:29
| |
LL | with_signature(cell, t, |cell, t| require(cell, t)); LL | with_signature(cell, t, |cell, t| require(cell, t));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
= help: consider adding an explicit lifetime bound `<T as Anything<'_#7r, '_#8r>>::AssocType: ReEarlyBound(0, 'a)`... = help: consider adding an explicit lifetime bound `<T as Anything<'_#6r, '_#7r>>::AssocType: ReEarlyBound(0, 'a)`...
note: External requirements note: External requirements
--> $DIR/projection-two-region-trait-bound-closure.rs:78:29 --> $DIR/projection-two-region-trait-bound-closure.rs:78:29
@ -98,7 +98,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T))
] ]
= note: number of external vids: 6 = note: number of external vids: 5
= note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r = note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r
note: No external requirements note: No external requirements
@ -109,7 +109,7 @@ LL | | where
LL | | T: Anything<'b, 'c>, LL | | T: Anything<'b, 'c>,
LL | | T::AssocType: 'a, LL | | T::AssocType: 'a,
... | ... |
LL | | //~^ ERROR associated type `<T as Anything<'_#7r, '_#8r>>::AssocType` may not live long enough LL | | //~^ ERROR associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough
LL | | } LL | | }
| |_^ | |_^
| |
@ -120,13 +120,13 @@ LL | | }
T T
] ]
error[E0309]: the associated type `<T as Anything<'_#7r, '_#8r>>::AssocType` may not live long enough error[E0309]: the associated type `<T as Anything<'_#6r, '_#7r>>::AssocType` may not live long enough
--> $DIR/projection-two-region-trait-bound-closure.rs:78:29 --> $DIR/projection-two-region-trait-bound-closure.rs:78:29
| |
LL | with_signature(cell, t, |cell, t| require(cell, t)); LL | with_signature(cell, t, |cell, t| require(cell, t));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
= help: consider adding an explicit lifetime bound `<T as Anything<'_#7r, '_#8r>>::AssocType: ReEarlyBound(0, 'a)`... = help: consider adding an explicit lifetime bound `<T as Anything<'_#6r, '_#7r>>::AssocType: ReEarlyBound(0, 'a)`...
note: External requirements note: External requirements
--> $DIR/projection-two-region-trait-bound-closure.rs:88:29 --> $DIR/projection-two-region-trait-bound-closure.rs:88:29
@ -142,7 +142,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T))
] ]
= note: number of external vids: 6 = note: number of external vids: 5
= note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r = note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r
note: No external requirements note: No external requirements
@ -178,7 +178,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#4r ()>, T))
] ]
= note: number of external vids: 6 = note: number of external vids: 5
= note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r = note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#3r)>>::AssocType: '_#4r
note: No external requirements note: No external requirements
@ -212,7 +212,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where <T as Anything<ReClosureBound('_#1r), ReClosureBound('_#1r)>>::AssocType: '_#2r = note: where <T as Anything<ReClosureBound('_#1r), ReClosureBound('_#1r)>>::AssocType: '_#2r
note: No external requirements note: No external requirements
@ -223,7 +223,7 @@ LL | | where
LL | | T: Anything<'b, 'b>, LL | | T: Anything<'b, 'b>,
LL | | { LL | | {
LL | | with_signature(cell, t, |cell, t| require(cell, t)); LL | | with_signature(cell, t, |cell, t| require(cell, t));
LL | | //~^ ERROR LL | | //~^ ERROR unsatisfied lifetime constraints
LL | | } LL | | }
| |_^ | |_^
| |
@ -256,7 +256,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#2r)>>::AssocType: '_#3r = note: where <T as Anything<ReClosureBound('_#2r), ReClosureBound('_#2r)>>::AssocType: '_#3r
note: No external requirements note: No external requirements
@ -289,7 +289,7 @@ LL | with_signature(cell, t, |cell, t| require(cell, t));
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where <T as Anything<ReClosureBound('_#1r), ReClosureBound('_#1r)>>::AssocType: '_#2r = note: where <T as Anything<ReClosureBound('_#1r), ReClosureBound('_#1r)>>::AssocType: '_#2r
note: No external requirements note: No external requirements

View file

@ -9,7 +9,7 @@ LL | twice(cell, value, |a, b| invoke(a, b));
i16, i16,
for<'r, 's> extern "rust-call" fn((std::option::Option<std::cell::Cell<&'_#1r &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 'r)) ()>>, &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 's)) T)) for<'r, 's> extern "rust-call" fn((std::option::Option<std::cell::Cell<&'_#1r &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 'r)) ()>>, &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 's)) T))
] ]
= note: number of external vids: 3 = note: number of external vids: 2
= note: where T: '_#1r = note: where T: '_#1r
note: No external requirements note: No external requirements
@ -36,7 +36,7 @@ LL | twice(cell, value, |a, b| invoke(a, b));
i16, i16,
for<'r, 's> extern "rust-call" fn((std::option::Option<std::cell::Cell<&'_#1r &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 'r)) ()>>, &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 's)) T)) for<'r, 's> extern "rust-call" fn((std::option::Option<std::cell::Cell<&'_#1r &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 'r)) ()>>, &ReLateBound(DebruijnIndex(0), BrNamed(crate0:DefIndex(0:0), 's)) T))
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where T: '_#1r = note: where T: '_#1r
note: No external requirements note: No external requirements

View file

@ -10,7 +10,7 @@ LL | with_signature(x, |y| y)
i32, i32,
extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn std::fmt::Debug + '_#2r)> extern "rust-call" fn((std::boxed::Box<T>,)) -> std::boxed::Box<(dyn std::fmt::Debug + '_#2r)>
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where T: '_#2r = note: where T: '_#2r
note: No external requirements note: No external requirements

View file

@ -16,7 +16,7 @@ LL | | })
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#1r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#1r ()>, T))
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where T: '_#1r = note: where T: '_#1r
note: No external requirements note: No external requirements
@ -69,7 +69,7 @@ LL | | })
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 4 = note: number of external vids: 3
= note: where T: '_#2r = note: where T: '_#2r
note: No external requirements note: No external requirements
@ -106,7 +106,7 @@ LL | | })
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where T: '_#2r = note: where T: '_#2r
note: No external requirements note: No external requirements
@ -156,7 +156,7 @@ LL | | })
i32, i32,
extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)) extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T))
] ]
= note: number of external vids: 5 = note: number of external vids: 4
= note: where T: '_#3r = note: where T: '_#3r
note: No external requirements note: No external requirements

View file

@ -1,10 +1,10 @@
error: unsatisfied lifetime constraints error: unsatisfied lifetime constraints
--> $DIR/regions-addr-of-self.rs:17:37 --> $DIR/regions-addr-of-self.rs:17:13
| |
LL | pub fn chase_cat(&mut self) { LL | pub fn chase_cat(&mut self) {
| - let's call the lifetime of this reference `'1` | - let's call the lifetime of this reference `'1`
LL | let p: &'static mut usize = &mut self.cats_chased; //~ ERROR cannot infer LL | let p: &'static mut usize = &mut self.cats_chased; //~ ERROR cannot infer
| ^^^^^^^^^^^^^^^^^^^^^ requires that `'1` must outlive `'static` | ^ requires that `'1` must outlive `'static`
error: aborting due to previous error error: aborting due to previous error

View file

@ -1,10 +1,22 @@
error: unsatisfied lifetime constraints error: unsatisfied lifetime constraints
--> $DIR/regions-addr-of-upvar-self.rs:20:41 --> $DIR/regions-addr-of-upvar-self.rs:20:17
| |
LL | let _f = || { LL | let _f = || {
| -- lifetime `'1` represents this closure's body | -- lifetime `'1` represents this closure's body
LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
| ^^^^^^^^^^^^^^ requires that `'1` must outlive `'static` | ^ requires that `'1` must outlive `'static`
|
= note: closure implements `FnMut`, so references to captured variables can't escape the closure
error: unsatisfied lifetime constraints
--> $DIR/regions-addr-of-upvar-self.rs:20:17
|
LL | pub fn chase_cat(&mut self) {
| --------- lifetime `'2` appears in the type of `self`
LL | let _f = || {
| -- lifetime `'1` represents this closure's body
LL | let p: &'static mut usize = &mut self.food; //~ ERROR cannot infer
| ^ requires that `'1` must outlive `'2`
| |
= note: closure implements `FnMut`, so references to captured variables can't escape the closure = note: closure implements `FnMut`, so references to captured variables can't escape the closure
@ -29,6 +41,6 @@ LL | }
| |
= note: borrowed value must be valid for the static lifetime... = note: borrowed value must be valid for the static lifetime...
error: aborting due to 3 previous errors error: aborting due to 4 previous errors
For more information about this error, try `rustc --explain E0597`. For more information about this error, try `rustc --explain E0597`.

View file

@ -1,10 +1,10 @@
error: unsatisfied lifetime constraints error: unsatisfied lifetime constraints
--> $DIR/regions-close-object-into-object-2.rs:20:5 --> $DIR/regions-close-object-into-object-2.rs:20:11
| |
LL | fn g<'a, T: 'static>(v: Box<A<T>+'a>) -> Box<X+'static> { LL | fn g<'a, T: 'static>(v: Box<A<T>+'a>) -> Box<X+'static> {
| -- lifetime `'a` defined here | -- lifetime `'a` defined here
LL | box B(&*v) as Box<X> //~ ERROR cannot infer LL | box B(&*v) as Box<X> //~ ERROR cannot infer
| ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static` | ^^^ cast requires that `'a` must outlive `'static`
error[E0597]: `*v` does not live long enough error[E0597]: `*v` does not live long enough
--> $DIR/regions-close-object-into-object-2.rs:20:11 --> $DIR/regions-close-object-into-object-2.rs:20:11

View file

@ -6,14 +6,6 @@ LL | box B(&*v) as Box<X> //~ ERROR cannot infer
| |
= help: consider adding an explicit lifetime bound `U: 'static`... = help: consider adding an explicit lifetime bound `U: 'static`...
error: unsatisfied lifetime constraints
--> $DIR/regions-close-object-into-object-4.rs:20:5
|
LL | fn i<'a, T, U>(v: Box<A<U>+'a>) -> Box<X+'static> {
| -- lifetime `'a` defined here
LL | box B(&*v) as Box<X> //~ ERROR cannot infer
| ^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'a` must outlive `'static`
error[E0310]: the parameter type `U` may not live long enough error[E0310]: the parameter type `U` may not live long enough
--> $DIR/regions-close-object-into-object-4.rs:20:9 --> $DIR/regions-close-object-into-object-4.rs:20:9
| |
@ -22,6 +14,14 @@ LL | box B(&*v) as Box<X> //~ ERROR cannot infer
| |
= help: consider adding an explicit lifetime bound `U: 'static`... = help: consider adding an explicit lifetime bound `U: 'static`...
error: unsatisfied lifetime constraints
--> $DIR/regions-close-object-into-object-4.rs:20:11
|
LL | fn i<'a, T, U>(v: Box<A<U>+'a>) -> Box<X+'static> {
| -- lifetime `'a` defined here
LL | box B(&*v) as Box<X> //~ ERROR cannot infer
| ^^^ cast requires that `'a` must outlive `'static`
error[E0597]: `*v` does not live long enough error[E0597]: `*v` does not live long enough
--> $DIR/regions-close-object-into-object-4.rs:20:11 --> $DIR/regions-close-object-into-object-4.rs:20:11
| |

View file

@ -15,7 +15,7 @@ LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of
| ^^^^^^^^^^^^^ lifetime `'static` required | ^^^^^^^^^^^^^ lifetime `'static` required
error[E0621]: explicit lifetime required in the type of `v` error[E0621]: explicit lifetime required in the type of `v`
--> $DIR/regions-static-bound.rs:26:5 --> $DIR/regions-static-bound.rs:27:5
| |
LL | fn error(u: &(), v: &()) { LL | fn error(u: &(), v: &()) {
| --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()` | --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()`
@ -23,6 +23,27 @@ LL | fn error(u: &(), v: &()) {
LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621] LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
| ^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required | ^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required
error: aborting due to 3 previous errors error: unsatisfied lifetime constraints
--> $DIR/regions-static-bound.rs:24:5
|
LL | fn error(u: &(), v: &()) {
| - - let's call the lifetime of this reference `'2`
| |
| let's call the lifetime of this reference `'1`
LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
| ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
error: unsatisfied lifetime constraints
--> $DIR/regions-static-bound.rs:27:5
|
LL | fn error(u: &(), v: &()) {
| - - let's call the lifetime of this reference `'1`
| |
| let's call the lifetime of this reference `'2`
...
LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
| ^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
error: aborting due to 5 previous errors
For more information about this error, try `rustc --explain E0621`. For more information about this error, try `rustc --explain E0621`.

View file

@ -20,7 +20,7 @@ LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of
| ^^^^^^^^^ lifetime `'static` required | ^^^^^^^^^ lifetime `'static` required
error[E0621]: explicit lifetime required in the type of `v` error[E0621]: explicit lifetime required in the type of `v`
--> $DIR/regions-static-bound.rs:26:5 --> $DIR/regions-static-bound.rs:27:5
| |
LL | fn error(u: &(), v: &()) { LL | fn error(u: &(), v: &()) {
| --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()` | --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()`

View file

@ -15,7 +15,7 @@ LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of
| ^^^^^^^^^^^^^ lifetime `'static` required | ^^^^^^^^^^^^^ lifetime `'static` required
error[E0621]: explicit lifetime required in the type of `v` error[E0621]: explicit lifetime required in the type of `v`
--> $DIR/regions-static-bound.rs:26:5 --> $DIR/regions-static-bound.rs:27:5
| |
LL | fn error(u: &(), v: &()) { LL | fn error(u: &(), v: &()) {
| --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()` | --- help: add explicit lifetime `'static` to the type of `v`: `&'static ()`
@ -23,6 +23,27 @@ LL | fn error(u: &(), v: &()) {
LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621] LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
| ^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required | ^^^^^^^^^^^^^^^^^^^^^^ lifetime `'static` required
error: aborting due to 3 previous errors error: unsatisfied lifetime constraints
--> $DIR/regions-static-bound.rs:24:5
|
LL | fn error(u: &(), v: &()) {
| - - let's call the lifetime of this reference `'2`
| |
| let's call the lifetime of this reference `'1`
LL | static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
| ^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
error: unsatisfied lifetime constraints
--> $DIR/regions-static-bound.rs:27:5
|
LL | fn error(u: &(), v: &()) {
| - - let's call the lifetime of this reference `'1`
| |
| let's call the lifetime of this reference `'2`
...
LL | static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
| ^^^^^^^^^^^^^^^^^^^^^^ argument requires that `'1` must outlive `'2`
error: aborting due to 5 previous errors
For more information about this error, try `rustc --explain E0621`. For more information about this error, try `rustc --explain E0621`.

View file

@ -23,8 +23,10 @@ fn static_id_wrong_way<'a>(t: &'a ()) -> &'static () where 'static: 'a {
fn error(u: &(), v: &()) { fn error(u: &(), v: &()) {
static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621] static_id(&u); //[ll]~ ERROR explicit lifetime required in the type of `u` [E0621]
//[nll]~^ ERROR explicit lifetime required in the type of `u` [E0621] //[nll]~^ ERROR explicit lifetime required in the type of `u` [E0621]
//[nll]~| ERROR unsatisfied lifetime constraints
static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621] static_id_indirect(&v); //[ll]~ ERROR explicit lifetime required in the type of `v` [E0621]
//[nll]~^ ERROR explicit lifetime required in the type of `v` [E0621] //[nll]~^ ERROR explicit lifetime required in the type of `v` [E0621]
//[nll]~| ERROR unsatisfied lifetime constraints
} }
fn main() {} fn main() {}

View file

@ -5,7 +5,7 @@ LL | fn a<T>(items: &[T]) -> Box<dyn Iterator<Item=&T>> {
| - let's call the lifetime of this reference `'1` | - let's call the lifetime of this reference `'1`
LL | // ^^^^^^^^^^^^^^^^^^^^^ bound *here* defaults to `'static` LL | // ^^^^^^^^^^^^^^^^^^^^^ bound *here* defaults to `'static`
LL | Box::new(items.iter()) //~ ERROR cannot infer an appropriate lifetime LL | Box::new(items.iter()) //~ ERROR cannot infer an appropriate lifetime
| ^^^^^^^^^^^^^^^^^^^^^^ returning this value requires that `'1` must outlive `'static` | ^^^^^^^^^^^^^^^^^^^^^^ cast requires that `'1` must outlive `'static`
error: aborting due to previous error error: aborting due to previous error