//@run-rustfix #![allow(unused)] #![no_main] use std::cmp::Ordering; // lint #[derive(Eq, PartialEq)] struct A(u32); impl Ord for A { fn cmp(&self, other: &Self) -> Ordering { todo!(); } } impl PartialOrd for A { fn partial_cmp(&self, other: &Self) -> Option { todo!(); } } // do not lint #[derive(Eq, PartialEq)] struct B(u32); impl Ord for B { fn cmp(&self, other: &Self) -> Ordering { todo!(); } } impl PartialOrd for B { fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } } // lint, but we can't give a suggestion since &Self is not named #[derive(Eq, PartialEq)] struct C(u32); impl Ord for C { fn cmp(&self, other: &Self) -> Ordering { todo!(); } } impl PartialOrd for C { fn partial_cmp(&self, _: &Self) -> Option { todo!(); } } // do not lint derived #[derive(Eq, Ord, PartialEq, PartialOrd)] struct D(u32); // do not lint if ord is not manually implemented #[derive(Eq, PartialEq)] struct E(u32); impl PartialOrd for E { fn partial_cmp(&self, other: &Self) -> Option { todo!(); } } // do not lint since ord has more restrictive bounds #[derive(Eq, PartialEq)] struct Uwu(A); impl Ord for Uwu { fn cmp(&self, other: &Self) -> Ordering { todo!(); } } impl PartialOrd for Uwu { fn partial_cmp(&self, other: &Self) -> Option { todo!(); } }