summaryrefslogtreecommitdiffstats
path: root/src/test/ui/traits/default-method/rustc_must_implement_one_of.rs
blob: 5ba2f5ce3342668c16e1a3678a91ca21723846bf (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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#![feature(rustc_attrs)]

#[rustc_must_implement_one_of(eq, neq)]
trait Equal {
    fn eq(&self, other: &Self) -> bool {
        !self.neq(other)
    }

    fn neq(&self, other: &Self) -> bool {
        !self.eq(other)
    }
}

struct T0;
struct T1;
struct T2;
struct T3;

impl Equal for T0 {
    fn eq(&self, _other: &Self) -> bool {
        true
    }
}

impl Equal for T1 {
    fn neq(&self, _other: &Self) -> bool {
        false
    }
}

impl Equal for T2 {
    fn eq(&self, _other: &Self) -> bool {
        true
    }

    fn neq(&self, _other: &Self) -> bool {
        false
    }
}

impl Equal for T3 {}
//~^ not all trait items implemented, missing one of: `eq`, `neq`

fn main() {}