22 lines
482 B
Rust
22 lines
482 B
Rust
|
#![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() {}
|