summaryrefslogtreecommitdiffstats
path: root/src/test/ui/regions/regions-infer-paramd-indirect.rs
blob: 978c84e537462b45b36088b83170d0749b2c3fc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Check that we correctly infer that b and c must be region
// parameterized because they reference a which requires a region.

type A<'a> = &'a isize;
type B<'a> = Box<A<'a>>;

struct C<'a> {
    f: Box<B<'a>>
}

trait SetF<'a> {
    fn set_f_ok(&mut self, b: Box<B<'a>>);
    fn set_f_bad(&mut self, b: Box<B>);
}

impl<'a> SetF<'a> for C<'a> {
    fn set_f_ok(&mut self, b: Box<B<'a>>) {
        self.f = b;
    }

    fn set_f_bad(&mut self, b: Box<B>) {
        self.f = b;
        //~^ ERROR lifetime may not live long enough
    }
}

fn main() {}