blob: f968dca4fd310a330ee93ae8fdf0a86f73cd2e0b [file] [log] [blame] [edit]
//@ revisions: current next
//@ ignore-compare-mode-next-solver (explicit revisions)
//@[next] compile-flags: -Znext-solver
//@ check-fail
//
// Make sure we can't trick the compiler by using a projection.
trait Cat<'a> {}
impl Cat<'_> for () {}
trait Id {
type Id: ?Sized;
}
impl<T: ?Sized> Id for T {
type Id = T;
}
struct S<T: ?Sized> {
tail: <T as Id>::Id,
}
fn m<'a>() {
let unsend: *const dyn Cat<'a> = &();
let _send = unsend as *const S<dyn Cat<'static>>;
//~^ error: lifetime may not live long enough
}
fn main() {
m();
}