rust/tests/ui/implied-bounds/issue-110161.rs

27 lines
561 B
Rust

// ICE regression relating to unconstrained lifetimes in implied
// bounds. See #110161.
//@ compile-flags: --crate-type=lib
trait LtTrait {
type Ty;
}
// erroneous `Ty` impl
impl LtTrait for () {
//~^ ERROR not all trait items implemented, missing: `Ty` [E0046]
}
// `'lt` is not constrained by the erroneous `Ty`
impl<'lt, T> LtTrait for Box<T>
where
T: LtTrait<Ty = &'lt ()>,
{
type Ty = &'lt ();
}
// unconstrained lifetime appears in implied bounds
fn test(_: <Box<()> as LtTrait>::Ty) {}
fn test2<'x>(_: &'x <Box<()> as LtTrait>::Ty) {}