summaryrefslogtreecommitdiffstats
path: root/tests/ui/impl-trait/capture-lifetime-not-in-hir.rs
blob: 9c067cb69344449e4a332ef50578fb819c3c4274 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#![feature(rustc_attrs)]
#![rustc_variance_of_opaques]

trait Bar<'a> {
    type Assoc: From<()>;
}

fn foo<'a, T: Bar<'a>>() -> impl Into<T::Assoc> {
    //~^ ERROR [o, o]
    // captures both T and 'a invariantly
    ()
}

fn foo2<'a, T: Bar<'a>>() -> impl Into<T::Assoc> + 'a {
    //~^ ERROR [o, o, o]
    // captures both T and 'a invariantly, and also duplicates `'a`
    // i.e. the opaque looks like `impl Into<<T as Bar<'a>>::Assoc> + 'a_duplicated`
    ()
}

fn main() {}