about summary refs log tree commit diff
path: root/tests/ui/lazy-type-alias-impl-trait/branches2.rs
blob: 35b76845c85b5d28bad330e19342780dc7d316ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#![feature(type_alias_impl_trait)]

//@ check-pass

type Foo = impl std::iter::FromIterator<i32> + PartialEq<Vec<i32>> + std::fmt::Debug;

#[define_opaque(Foo)]
fn foo(b: bool) -> Foo {
    if b { vec![42_i32] } else { std::iter::empty().collect() }
}

fn bar(b: bool) -> impl PartialEq<Vec<i32>> + std::fmt::Debug {
    if b { vec![42_i32] } else { std::iter::empty().collect() }
}

fn main() {
    assert_eq!(foo(true), vec![42]);
    assert_eq!(foo(false), vec![]);
    assert_eq!(bar(true), vec![42]);
    assert_eq!(bar(false), vec![]);
}