// check-pass

// If we allow the parent generics here without using lazy normalization
// this results in a cycle error.
struct Foo<T, U>(T, U);

impl<T> From<[u8; 1 + 1]> for Foo<T, [u8; 1 + 1]> {
    fn from(value: [u8; 1 + 1]) -> Foo<T, [u8; 1 + 1]> {
        todo!();
    }
}

fn break_me<T>()
where
    [u8; 1 + 1]: From<[u8; 1 + 1]>
{}

fn main() {}
