2012-07-11 10:28:30 -07:00
|
|
|
// Check that we correctly infer that b and c must be region
|
|
|
|
|
// parameterized because they reference a which requires a region.
|
|
|
|
|
|
2018-12-16 22:21:47 -05:00
|
|
|
type A<'a> = &'a isize;
|
|
|
|
|
type B<'a> = Box<A<'a>>;
|
2013-03-06 19:09:17 -08:00
|
|
|
|
2018-12-16 22:21:47 -05:00
|
|
|
struct C<'a> {
|
|
|
|
|
f: Box<B<'a>>
|
2013-03-06 19:09:17 -08:00
|
|
|
}
|
2012-07-11 10:28:30 -07:00
|
|
|
|
2018-12-16 22:21:47 -05:00
|
|
|
trait SetF<'a> {
|
|
|
|
|
fn set_f_ok(&mut self, b: Box<B<'a>>);
|
|
|
|
|
fn set_f_bad(&mut self, b: Box<B>);
|
2012-07-11 15:00:40 -07:00
|
|
|
}
|
|
|
|
|
|
2018-12-16 22:21:47 -05:00
|
|
|
impl<'a> SetF<'a> for C<'a> {
|
|
|
|
|
fn set_f_ok(&mut self, b: Box<B<'a>>) {
|
2012-07-11 10:28:30 -07:00
|
|
|
self.f = b;
|
|
|
|
|
}
|
|
|
|
|
|
2018-12-16 22:21:47 -05:00
|
|
|
fn set_f_bad(&mut self, b: Box<B>) {
|
2014-12-05 18:12:25 -08:00
|
|
|
self.f = b;
|
2022-04-01 13:13:25 -04:00
|
|
|
//~^ ERROR lifetime may not live long enough
|
2012-07-11 10:28:30 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-07-11 15:00:40 -07:00
|
|
|
fn main() {}
|