summaryrefslogtreecommitdiffstats
path: root/tests/ui/suggestions/restrict-existing-type-bounds.rs
blob: 07712ce0de684ae624bf3e527754e234eeb2c58b (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
29
30
pub trait TryAdd<Rhs = Self> {
    type Error;
    type Output;

    fn try_add(self, rhs: Rhs) -> Result<Self::Output, Self::Error>;
}

impl<T: TryAdd> TryAdd for Option<T> {
    type Error = <T as TryAdd>::Error;
    type Output = Option<<T as TryAdd>::Output>;

    fn try_add(self, rhs: Self) -> Result<Self::Output, Self::Error> {
        Ok(self) //~ ERROR mismatched types
    }
}

struct Other<A>(A);

struct X;

impl<T: TryAdd<Error = X>> TryAdd for Other<T> {
    type Error = <T as TryAdd>::Error;
    type Output = Other<<T as TryAdd>::Output>;

    fn try_add(self, rhs: Self) -> Result<Self::Output, Self::Error> {
        Ok(self) //~ ERROR mismatched types
    }
}

fn main() {}