#![feature(trait_alias)]

struct B;
struct C;

trait Tr {}

impl Tr for B {}
impl Tr for C {}

trait Tr2<S> = Into<S>;

fn foo2<T: Tr2<()>>() {}

fn foo() -> impl Tr {
    let x = foo2::<_>();

    match true {
        true => B,
        false => C,
        //~^ `match` arms have incompatible types
    }
}

fn main() {}