account for the pick-constraint edges when reporting errors
Also, thread through better span info to improve the error message to something tolerable.
This commit is contained in:
parent
3e01c7416a
commit
0b15a66a80
10 changed files with 195 additions and 18 deletions
21
src/test/ui/impl-trait/multiple-lifetimes/error-handling.rs
Normal file
21
src/test/ui/impl-trait/multiple-lifetimes/error-handling.rs
Normal file
|
@ -0,0 +1,21 @@
|
|||
// compile-flags:-Zborrowck=mir
|
||||
|
||||
#![feature(existential_type)]
|
||||
|
||||
#[derive(Clone)]
|
||||
struct CopyIfEq<T, U>(T, U);
|
||||
|
||||
impl<T: Copy> Copy for CopyIfEq<T, T> {}
|
||||
|
||||
existential type E<'a, 'b>: Sized;
|
||||
//~^ ERROR lifetime may not live long enough
|
||||
|
||||
fn foo<'a, 'b, 'c>(x: &'static i32, mut y: &'a i32) -> E<'b, 'c> {
|
||||
let v = CopyIfEq::<*mut _, *mut _>(&mut {x}, &mut y);
|
||||
let u = v;
|
||||
let _: *mut &'a i32 = u.1;
|
||||
unsafe { let _: &'b i32 = *u.0; }
|
||||
u.0
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Add table
Add a link
Reference in a new issue