// check-pass
// compile-flags: -Z validate-mir
#![feature(let_chains)]

fn lambda<T, U>() -> U
where
    T: Default,
    U: Default,
{
    let foo: Result<T, ()> = Ok(T::default());
    let baz: U = U::default();

    if let Ok(foo) = foo && let Ok(bar) = transform(foo) {
        bar
    } else {
        baz
    }
}

fn transform<T, U>(input: T) -> Result<U, ()> {
    todo!()
}

fn main() {}