summaryrefslogtreecommitdiffstats
path: root/src/test/ui/regions/regions-assoc-type-region-bound-in-trait-not-met.rs
blob: 575dfafe15efc4dc9e17b07011560a114d027133 (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
// Test that the compiler checks that arbitrary region bounds declared
// in the trait must be satisfied on the impl. Issue #20890.

trait Foo<'a> {
    type Value: 'a;
    fn dummy(&'a self) {}
}

impl<'a> Foo<'a> for &'a i16 {
    // OK.
    type Value = &'a i32;
}

impl<'a> Foo<'static> for &'a i32 {
    type Value = &'a i32;
    //~^ ERROR the type `&'a i32` does not fulfill the required lifetime
}

impl<'a, 'b> Foo<'b> for &'a i64 {
    type Value = &'a i32;
    //~^ ERROR the type `&'a i32` does not fulfill the required lifetime
}

fn main() {}