summaryrefslogtreecommitdiffstats
path: root/tests/ui/specialization/issue-38091-2.rs
blob: 9ed0b240d0a0f43db02767c9762d977fb342b131 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// build-fail
//~^ ERROR overflow evaluating the requirement `i32: Check`

#![feature(specialization)]
//~^ WARN the feature `specialization` is incomplete

trait Iterate<'a> {
    type Ty: Valid;
    fn iterate(self);
}
impl<'a, T> Iterate<'a> for T
where
    T: Check,
{
    default type Ty = ();
    default fn iterate(self) {}
}

trait Check {}
impl<'a, T> Check for T where <T as Iterate<'a>>::Ty: Valid {}

trait Valid {}

impl Valid for () {}

fn main() {
    Iterate::iterate(0);
}